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/ManPages/man3/uuid_generate.3.html ). 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.



Reply via email to