X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=zone.c;h=0895f522649e83c6b634fa2f839798ff01fe442a;hb=1f38eee898a31c94cd3b9931ea3af6e83d51c2c4;hp=175b25a677ddf1cfbbb765da831194de7561d591;hpb=2573a080d1428ca682e70e1999ac52d4447f8e6e;p=xonotic%2Fdarkplaces.git diff --git a/zone.c b/zone.c index 175b25a6..0895f522 100644 --- a/zone.c +++ b/zone.c @@ -439,7 +439,16 @@ void *Mem_ExpandableArray_AllocRecord(memexpandablearray_t *l) } } -void Mem_ExpandableArray_FreeRecord(memexpandablearray_t *l, void *record) +/***************************************************************************** + * IF YOU EDIT THIS: + * If this function was to change the size of the "expandable" array, you have + * to update r_shadow.c + * Just do a search for "range =", R_ShadowClearWorldLights would be the first + * function to look at. (And also seems like the only one?) You might have to + * move the call to Mem_ExpandableArray_IndexRange back into for(...) loop's + * condition + */ +void Mem_ExpandableArray_FreeRecord(memexpandablearray_t *l, void *record) // const! { size_t i, j; unsigned char *p = (unsigned char *)record; @@ -459,19 +468,24 @@ void Mem_ExpandableArray_FreeRecord(memexpandablearray_t *l, void *record) } } -size_t Mem_ExpandableArray_IndexRange(memexpandablearray_t *l) +size_t Mem_ExpandableArray_IndexRange(const memexpandablearray_t *l) { - size_t i, j, k; - if (!l->numarrays) - return 0; - i = l->numarrays - 1; - for (j = 0, k = 0;k < l->arrays[i].numflaggedrecords;j++) - if (l->arrays[i].allocflags[j]) - k++; - return l->numrecordsperarray * i + j; + size_t i, j, k, end = 0; + for (i = 0;i < l->numarrays;i++) + { + for (j = 0, k = 0;k < l->arrays[i].numflaggedrecords;j++) + { + if (l->arrays[i].allocflags[j]) + { + end = l->numrecordsperarray * i + j + 1; + k++; + } + } + } + return end; } -void *Mem_ExpandableArray_RecordAtIndex(memexpandablearray_t *l, size_t index) +void *Mem_ExpandableArray_RecordAtIndex(const memexpandablearray_t *l, size_t index) { size_t i, j; i = index / l->numrecordsperarray;