[PATCH:libXt 2/5] makestrs: use strchr() instead of index()

Alan Coopersmith alan.coopersmith at oracle.com
Mon Jan 19 10:41:16 PST 2015


Besides being supported by more standards, strchr() has the important
characteristic of having a prototype included in <string.h> on Solaris
so that 64-bit compiles know it returns a pointer, not an integer.
(On Solaris, index() is only found in <strings.h>, for SunOS compatibility.)

Without this fix, makestrs segfaulted in 64-bit builds on Solaris after
commit f9baaf55ff8cbd4bf018a34f181eda30d03b20dc switched to <string.h>.

Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
 util/makestrs.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/util/makestrs.c b/util/makestrs.c
index ce0a0a3..2c4dcc8 100644
--- a/util/makestrs.c
+++ b/util/makestrs.c
@@ -583,7 +583,7 @@ static void DoLine(char *buf)
 	    int rlen;
 	    int len;
 
-	    if ((right = index(buf, ' ')))
+	    if ((right = strchr(buf, ' ')))
 		*right++ = 0;
 	    else
 		right = buf + 1;
@@ -666,8 +666,8 @@ static char* DoComment (char *line)
     int len;
 
     /* assume that the first line with two '$' in it is the RCS tag line */
-    if ((tag = index (line, '$')) == NULL) return NULL;
-    if ((eol = index (tag + 1, '$')) == NULL) return NULL;
+    if ((tag = strchr (line, '$')) == NULL) return NULL;
+    if ((eol = strchr (tag + 1, '$')) == NULL) return NULL;
     len = eol - tag;
     if ((ret = malloc (len)) == NULL)
 	exit (1);
-- 
1.7.9.2



More information about the xorg-devel mailing list