http://qs1969.pair.com?node_id=11122370


in reply to Re^2: Influencing the Gconvert macro
in thread Influencing the Gconvert macro

If you can't or won't spend time in fixing compline/d_gconvert.U ...

If I can fix it, then I will undertake to do so.
At the moment, however, I have no idea how d_gconvert.U fits into "the scheme of things".
AFAICS, it's not part of the perl source.

... but I am always scared of interpolation when requiring quotes

I bothers me a bit, too. Although the configure option that I used seems to have done the trick, it wasn't exactly noiseless:
In file included from sv.c:32:0: sv.c: In function ‘Perl_sv_vcatpvfn_flags’: config.h:909:39: warning: ‘%.*g’ directive writing between 1 and 133 b +ytes into a region of size 127 [-Wformat-overflow=] #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) ^ perl.h:6791:13: note: in definition of macro ‘WITH_LC_NUMERIC_SET_TO_N +EEDED_IN’ block; + \ ^~~~~ sv.c:48:5: note: in expansion of macro ‘PERL_UNUSED_RESULT’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~~~~~~~~~~~ sv.c:48:24: note: in expansion of macro ‘Gconvert’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~ sv.c:13118:21: note: in expansion of macro ‘SNPRINTF_G’ SNPRINTF_G(fv, ebuf, sizeof(ebuf), precis) ^ config.h:909:39: note: assuming directive output of 132 bytes #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) ^ perl.h:6791:13: note: in definition of macro ‘WITH_LC_NUMERIC_SET_TO_N +EEDED_IN’ block; + \ ^~~~~ sv.c:48:5: note: in expansion of macro ‘PERL_UNUSED_RESULT’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~~~~~~~~~~~ sv.c:48:24: note: in expansion of macro ‘Gconvert’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~ sv.c:13118:21: note: in expansion of macro ‘SNPRINTF_G’ SNPRINTF_G(fv, ebuf, sizeof(ebuf), precis) ^ In file included from /usr/include/stdio.h:862:0, from perlio.h:41, from iperlsys.h:50, from perl.h:3934, from sv.c:32: /usr/include/x86_64-linux-gnu/bits/stdio2.h:33:10: note: ‘__builtin___ +sprintf_chk’ output between 2 and 134 bytes into a destination of siz +e 127 return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __bos (__s), __fmt, __va_arg_pack ()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sv.c:32:0: config.h:909:39: warning: ‘%.*g’ directive writing between 1 and 133 b +ytes into a region of size 127 [-Wformat-overflow=] #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) ^ perl.h:6791:13: note: in definition of macro ‘WITH_LC_NUMERIC_SET_TO_N +EEDED_IN’ block; + \ ^~~~~ sv.c:48:5: note: in expansion of macro ‘PERL_UNUSED_RESULT’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~~~~~~~~~~~ sv.c:48:24: note: in expansion of macro ‘Gconvert’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~ sv.c:13118:21: note: in expansion of macro ‘SNPRINTF_G’ SNPRINTF_G(fv, ebuf, sizeof(ebuf), precis) ^ config.h:909:39: note: assuming directive output of 132 bytes #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) ^ perl.h:6791:13: note: in definition of macro ‘WITH_LC_NUMERIC_SET_TO_N +EEDED_IN’ block; + \ ^~~~~ sv.c:48:5: note: in expansion of macro ‘PERL_UNUSED_RESULT’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~~~~~~~~~~~ sv.c:48:24: note: in expansion of macro ‘Gconvert’ PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer)) ^~~~~~~~ sv.c:13118:21: note: in expansion of macro ‘SNPRINTF_G’ SNPRINTF_G(fv, ebuf, sizeof(ebuf), precis) ^ In file included from /usr/include/stdio.h:862:0, from perlio.h:41, from iperlsys.h:50, from perl.h:3934, from sv.c:32: /usr/include/x86_64-linux-gnu/bits/stdio2.h:33:10: note: ‘__builtin___ +sprintf_chk’ output between 2 and 134 bytes into a destination of siz +e 127 return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __bos (__s), __fmt, __va_arg_pack ()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Of course, I probably should at least run make test before I start getting too excited about how successful it has been ;-)

Cheers,
Rob