Thanks for the configuration info (esp to Byron - info about Solaris problems
is much easier to chase than info about Irix problems).
The problem seems to be that configuration isn't detecting the functions
snprintf or vsnprintf. If it can't find them, Hugs uses this simple minded
emulation (the interesting line is the 4th from last).
#if !defined(HAVE_SNPRINTF)
int snprintf(char* buffer, int count, const char* fmt, ...) {
#if defined(HAVE__VSNPRINTF)
int r;
va_list ap; /* pointer into argument list */
va_start(ap, fmt); /* make ap point to first arg after fmt */
r = vsnprintf(buffer, count, fmt, ap);
va_end(ap); /* clean up */
return r;
#else
return 0;
#endif
}
#endif /* HAVE_SNPRINTF */
Possible fixes:
1) Fix configuration to detect vsnprintf. Surely you must have them???
2) Use sprintf and vsprintf instead and hope you don't get buffer overflows.
I'm not at all happy with this approach since there's no obvious bound on
the amount of output.
(I'm also somewhat sensitive on the subject of buffer overflows at the
moment since it's a standard way for a hacker to break into your
system - see previous message.)
3) Use simple, conservative heuristics to predict buffer usage to prevent
most buffer eoverflows. Better but still not very happy.
4) Rework the entire Hugs error message system. Ain't gonna happen anytime
soon.
Alastair