[tex-live] portability issue in texmfmp.c
Jonathan Kew
jonathan_kew at sil.org
Fri Dec 29 19:54:30 CET 2006
Hi Martin -
I noticed the following in your rev. 2997:
Index: lib/texmfmp.c
===================================================================
--- lib/texmfmp.c (revision 2996)
+++ lib/texmfmp.c (revision 2997)
@@ -1958,7 +1958,7 @@
string
gettexstring P1C(strnumber, s)
{
- poolpointer i, len;
+ poolpointer len;
string name;
#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined
(XeTeX)
len = strstart[s + 1] - strstart[s];
@@ -1969,6 +1969,7 @@
#if !defined(Omega) && !defined(eOmega) && !defined(Aleph) && !defined
(XeTeX)
strncpy (name, (string)&strpool[strstart[s]], len);
#else
+ poolpointer i;
/* Don't use strncpy. The strpool is not made up of chars. */
for (i=0; i<len; i++) name[i] = strpool[i+strstartar[s - 65536L]];
#endif
I believe this will cause problems, because puts the declaration
"poolpointer i;" after a statement. This is legal in C++ and C99, but
not in more traditional C, and some current compilers will reject it.
(gcc accepts it, though I suppose if one used the -ansi and perhaps -
pedantic options, it might complain.)
Possible solutions include adding braces around the declaration and
following for-loop, or moving the declaration to the beginning of the
first #else in the function, so that it stays before any statements.
(Though looks a little odd there, IMO.)
I haven't checked in a change to this; maybe you could choose how
you'd like to adjust it?
JK
More information about the tex-live
mailing list