]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/expire/serv_expire.c
* Yup, that's it ... the expression (long)*(cdboi->ptr) does NOT work reliably...
[citadel.git] / citadel / modules / expire / serv_expire.c
index dd994e3b07296ac1a3c7c6632f8838159ebc5af4..ab1d3a35909d765021bd681c00e6b0f40e0f9839 100644 (file)
@@ -806,6 +806,7 @@ int PurgeStaleOpenIDassociations(void) {
        void *Value;
        const char *Key;
        int num_deleted = 0;
+       long usernum = 0L;
 
        keys = NewHash(1, NULL);
        if (!keys) return(0);
@@ -814,8 +815,7 @@ int PurgeStaleOpenIDassociations(void) {
        cdb_rewind(CDB_OPENID);
        while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) {
                if (cdboi->len > sizeof(long)) {
-                       long usernum;
-                       usernum = ((long)*(cdboi->ptr));
+                       memcpy(&usernum, cdboi->ptr, sizeof(long));
                        if (getuserbynumber(&usbuf, usernum) != 0) {
                                deleteme = strdup(cdboi->ptr + sizeof(long)),
                                Put(keys, deleteme, strlen(deleteme), deleteme, generic_free_handler);