On Wed, 20 Jul 2011, Igor Stasenko wrote:
I changed the MakeUUID in sqUnixUUID.c to look like following:
This change is useless IMHO. Instead of stopping the compilation, either return 0 from the function, so the primitive will fail, or fix the included header files for Darwin, which has uuid_generate (http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPag... ). But the best solution is using the Mac OS platform files instead of the Unix ones for Mac OS. Levente
int MakeUUID(char *location) { uuid_t uuid;
#if defined(HAVE_UUIDGEN) uuidgen(&uuid, 1); #elif defined(HAVE_UUID_GENERATE) uuid_generate(uuid); #else #error "No uuid function provided" #endif
memcpy((void *)location, (void *)&uuid, sizeof(uuid)); return 1; }
and during compiling cocoa vms it fails with error. And before change the code was looking like following:
int MakeUUID(char *location) { uuid_t uuid;
#if defined(HAVE_UUIDGEN) uuidgen(&uuid, 1); #elif defined(HAVE_UUID_GENERATE) uuid_generate(uuid); #endif
memcpy((void *)location, (void *)&uuid, sizeof(uuid)); return 1; }
which means that if none HAVE_UUIDGEN or HAVE_UUID_GENERATE is defined, then there is nothing got called and memcpy then returns a random values on stack, copied from uuid to locaiton.
And first version of that file just contains :
int MakeUUID(char *location) { uuid_t uuid; uuid_generate(uuid); memcpy((void *)location, (void *)&uuid, sizeof(uuid)); return 1; }
and then changed to:
#if defined(__NetBSD__) uuidgen(&uuid, 1); #else uuid_generate(uuid); #endif
and then changed to:
#if defined(HAVE_UUIDGEN) uuidgen(&uuid, 1); #elif defined(HAVE_UUID_GENERATE) uuid_generate(uuid); #endif
Blame: Merge Levente's linux UUIDPlugin fix. Fix tickerSleepCycle decl in heartbeat. Restore -O2 optimization for the interpreter.
Author: eliot Date: 5 months ago Commit: 757297f62c32eaf2af7f26ce66aa6499df776749
-- Best regards, Igor Stasenko AKA sig.