Index: TODO =================================================================== diff -u -r49fef633ef7d01e3ae5c0f6793317dc93944865d -rad24a87ea5581cd818fd8cc5f17668d1a63db97d --- TODO (.../TODO) (revision 49fef633ef7d01e3ae5c0f6793317dc93944865d) +++ TODO (.../TODO) (revision ad24a87ea5581cd818fd8cc5f17668d1a63db97d) @@ -3950,6 +3950,7 @@ - fix compilation when compiled without threads (many thanks for r.zaumseil for noting this). +- protect serial generation for parameters via mutex ======================================================================== TODO: Index: generic/nsf.c =================================================================== diff -u -r49fef633ef7d01e3ae5c0f6793317dc93944865d -rad24a87ea5581cd818fd8cc5f17668d1a63db97d --- generic/nsf.c (.../nsf.c) (revision 49fef633ef7d01e3ae5c0f6793317dc93944865d) +++ generic/nsf.c (.../nsf.c) (revision ad24a87ea5581cd818fd8cc5f17668d1a63db97d) @@ -8751,11 +8751,17 @@ static NsfParamDefs * ParamDefsNew() { NsfParamDefs *paramDefs; + static NsfMutex serialMutex = 0; static int serial = 0; paramDefs = NEW(NsfParamDefs); memset(paramDefs, 0, sizeof(NsfParamDefs)); + + /* We could keep the serial as well in thread local storage */ + NsfMutexLock(&serialMutex); paramDefs->serial = serial++; + NsfMutexUnlock(&serialMutex); + /*fprintf(stderr, "ParamDefsNew %p\n", paramDefs);*/ return paramDefs;