mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-08-05 12:39:52 +00:00
teach object_key_increment() key types.
This is so we can increment all integer types correctly. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2512 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
parent
73b7aa19bb
commit
0c9a6c49ff
85
exec/objdb.c
85
exec/objdb.c
@ -968,9 +968,45 @@ static int object_key_increment (
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found && object_key->value_len == sizeof(int)) {
|
||||
(*(int *)object_key->value)++;
|
||||
*value = *(int *)object_key->value;
|
||||
|
||||
if (found) {
|
||||
switch (object_key->value_type) {
|
||||
case OBJDB_VALUETYPE_INT16:
|
||||
(*(int16_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT16:
|
||||
(*(uint16_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT32:
|
||||
(*(int32_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT32:
|
||||
(*(uint32_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT64:
|
||||
(*(int64_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT64:
|
||||
(*(uint64_t *)object_key->value)++;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_ANY:
|
||||
/* for backwards compatibilty */
|
||||
if (object_key->value_len == sizeof(int)) {
|
||||
(*(int *)object_key->value)++;
|
||||
}
|
||||
else {
|
||||
res = -1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
res = -1;
|
||||
break;
|
||||
}
|
||||
if (res == 0) {
|
||||
/* nasty, not sure why we need to return this typed
|
||||
* instead of void* */
|
||||
*value = *(int *)object_key->value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
res = -1;
|
||||
@ -1014,9 +1050,46 @@ static int object_key_decrement (
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found && object_key->value_len == sizeof(int)) {
|
||||
(*(int *)object_key->value)--;
|
||||
*value = *(int *)object_key->value;
|
||||
|
||||
|
||||
if (found) {
|
||||
switch (object_key->value_type) {
|
||||
case OBJDB_VALUETYPE_INT16:
|
||||
(*(int16_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT16:
|
||||
(*(uint16_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT32:
|
||||
(*(int32_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT32:
|
||||
(*(uint32_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT64:
|
||||
(*(int64_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT64:
|
||||
(*(uint64_t *)object_key->value)--;
|
||||
break;
|
||||
case OBJDB_VALUETYPE_ANY:
|
||||
/* for backwards compatibilty */
|
||||
if (object_key->value_len == sizeof(int)) {
|
||||
(*(int *)object_key->value)--;
|
||||
}
|
||||
else {
|
||||
res = -1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
res = -1;
|
||||
break;
|
||||
}
|
||||
if (res == 0) {
|
||||
/* nasty, not sure why we need to return this typed
|
||||
* instead of void* */
|
||||
*value = *(int *)object_key->value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
res = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user