return APR_ENOSHMAVAIL;
}
if (id >= slot->desc.num) {
- return APR_ENOSHMAVAIL;
+ return APR_EINVAL;
}
ptr = (char *)slot->base + slot->desc.size * id;
}
inuse = slot->inuse + id;
- if (id >= slot->desc.num || (AP_SLOTMEM_IS_PREGRAB(slot) && !*inuse)) {
+ if (id >= slot->desc.num) {
+ return APR_EINVAL;
+ }
+ if (AP_SLOTMEM_IS_PREGRAB(slot) && !*inuse) {
return APR_NOTFOUND;
}
ret = slotmem_dptr(slot, id, &ptr);
}
inuse = slot->inuse + id;
- if (id >= slot->desc.num || (AP_SLOTMEM_IS_PREGRAB(slot) && !*inuse)) {
+ if (id >= slot->desc.num) {
+ return APR_EINVAL;
+ }
+ if (AP_SLOTMEM_IS_PREGRAB(slot) && !*inuse) {
return APR_NOTFOUND;
}
ret = slotmem_dptr(slot, id, &ptr);
"slotmem(%s) release failed. Num %u/inuse[%u] %d",
slot->name, slotmem_num_slots(slot),
id, (int)inuse[id]);
- return APR_NOTFOUND;
+ if (id >= slot->desc.num) {
+ return APR_EINVAL;
+ } else {
+ return APR_NOTFOUND;
+ }
}
inuse[id] = 0;
(*slot->num_free)++;