--- libaitio/src/Attic/sarray.c 2011/05/03 14:22:18 1.1.2.2 +++ libaitio/src/Attic/sarray.c 2011/05/03 14:45:55 1.1.2.3 @@ -174,11 +174,18 @@ io_sarrSet(sarr_t * __restrict arr, u_int idx, void *d return ret; seg = arr->sarr_data[idx / arr->sarr_seg]; - if (seg) { - pos = idx % arr->sarr_seg; - ret = seg[pos]; - seg[pos] = data; + if (!seg) { + seg = calloc(arr->sarr_seg, sizeof(void*)); + if (!seg) { + LOGERR; + return ret; + } else + memset(seg, 0, arr->sarr_seg * sizeof(void*)); } + + pos = idx % arr->sarr_seg; + ret = seg[pos]; + seg[pos] = data; return ret; }