Hi, my name is Simon Dommett from the UK, got a possible bug for you.

I am using global version 6.2.4

You should change the tolower() code in /htags/incop.c [strtolower()] and
  /libutil/locatestring.c [strincmp()], as on some systems they
 are #define macros, where the argument gets evaluated more than once.

Change into something like this:

//  /htags/incop.c

static const char *
strtolower(const char *s)
{
 static char lower[MAXPATHLEN];
 char *t = lower, *end = lower + sizeof(lower);

 do {
  if (t == end)
   die("name is too long.");

  *t = tolower((unsigned char)*s);
  s++;
 } while (*t++ != '\0');

 return lower;
}

//=====================================================
// /libutil/locatestring.c

static int
strincmp(const char *string, const char *pattern, size_t len)
{
 unsigned char s, p;

 while (len--) {
  s = tolower((unsigned char)*string);
  p = tolower((unsigned char)*pattern);
  if (s != p)
   return s - p;
  if (s == 0)
   break;
  string++;
  pattern++;
 }
 return 0;
}


You may use these code snippets however you like (placed into the public 
domain).

=========================================================
I have been converting your function header comments into Doxygen comments,
 will be sending diffs in 3 to 4 weeks time.


Please don't make my email address publicly viewable.
Thank you.

 
_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global
  • Bug Simon D

Reply via email to