On Tue, Jun 24, 2014 at 7:05 PM, Per Hedbor () @ Pike (-) developers forum 10353@lyskom.lysator.liu.se wrote:
Could you give this version of SET_SVAL a try, perhaps?
#define SET_SVAL(SVAL, TYPE, SUBTYPE, FIELD, EXPR) do { \ /* Set the type afterwards to avoid a clobbered \ * svalue in case EXPR throws. */ \ struct svalue * _sv_ptr=&( SVAL ); \ _sv_ptr->u.FIELD = (EXPR); \ *((ptrdiff_t*)&_sv_ptr->type) = TYPE_SUBTYPE(TYPE,SUBTYPE);\ } while(0)
Has exactly the same result.
It's entirely possible I'm misdiagnosing this. To come to the conclusion I did, I took the current 8.0 branch, reverted that one commit, and then began applying it piece by piece. The change to configure.in didn't break anything, the change to svalue.h did. Within that, changing from INT16 to short had no effect (on my system, I believe INT16 compiles to short anyway); adding structures and unused defines, unsurprisingly, didn't break anything; and changing the definition of SET_SVAL induced the error message. That's all the info I have to offer.
I'm starting up a completely fresh Pike clone to see if somehow I've accumulated cruft of some sort. If that behaves differently, I'll let you know.
ChrisA