Blob Blame History Raw
From ab7925afcc051d42a181bcfb87289b53aa37a935 Mon Sep 17 00:00:00 2001
From: Richard Barlow <richard@richardbarlow.co.uk>
Date: Sat, 12 Nov 2011 01:41:47 +0000
Subject: [PATCH] Fix parsing of route styles with units

A bug appeared after route styles started being saved with units
suffixed. When loading a PCB file the units were ignored and therefore
it was assumed the values were in cmils.

This was a problem in the get_unit_struct() function which didn't handle
long strings well. If the unit was followed by more characters strcmp
would return non-zero. The function has already worked out the length of
the unit text and therefore strncmp should be used.
---
 src/pcb-printf.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/pcb-printf.c b/src/pcb-printf.c
index c57a570..f687e06 100644
--- a/src/pcb-printf.c
+++ b/src/pcb-printf.c
@@ -182,10 +182,10 @@ const Unit *get_unit_struct (const char *const_suffix)
     }
 
   /* Do lookup */
-  if (*suffix)
+  if (*suffix && s_len > 0)
     for (i = 0; i < N_UNITS; ++i)
-      if (strcmp (suffix, Units[i].suffix) == 0 ||
-          strcmp (suffix, Units[i].alias[0]) == 0)
+      if (strncmp (suffix, Units[i].suffix, s_len) == 0 ||
+          strncmp (suffix, Units[i].alias[0], s_len) == 0)
         {
           g_free (m_suffix);
           return &Units[i];
-- 
1.7.4.4