mirror of
https://git.freebsd.org/ports.git
synced 2025-06-21 12:40:45 -04:00
57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
Index: src/dynarr.c
|
|
===================================================================
|
|
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dynarr.c,v
|
|
retrieving revision 1.13
|
|
retrieving revision 1.14
|
|
diff -u -r1.13 -r1.14
|
|
--- src/dynarr.c 2005/11/25 01:41:59 1.13
|
|
+++ src/dynarr.c 2006/01/20 17:59:50 1.14
|
|
@@ -129,16 +129,17 @@
|
|
static int Dynarr_min_size = 8;
|
|
|
|
static void
|
|
-Dynarr_realloc (Dynarr *dy, Bytecount new_size)
|
|
+Dynarr_realloc (Dynarr *dy, int new_size)
|
|
{
|
|
if (DUMPEDP (dy->base))
|
|
{
|
|
void *new_base = malloc (new_size);
|
|
- memcpy (new_base, dy->base, dy->max > new_size ? dy->max : new_size);
|
|
+ memcpy (new_base, dy->base,
|
|
+ (dy->max < new_size ? dy->max : new_size) * dy->elsize);
|
|
dy->base = new_base;
|
|
}
|
|
else
|
|
- dy->base = xrealloc (dy->base, new_size);
|
|
+ dy->base = xrealloc (dy->base, new_size * dy->elsize);
|
|
}
|
|
|
|
void *
|
|
@@ -158,13 +159,13 @@
|
|
Dynarr);
|
|
|
|
static void
|
|
-Dynarr_lisp_realloc (Dynarr *dy, Elemcount new_size)
|
|
+Dynarr_lisp_realloc (Dynarr *dy, int new_size)
|
|
{
|
|
void *new_base = alloc_lrecord_array (dy->elsize, new_size, dy->lisp_imp);
|
|
void *old_base = dy->base;
|
|
if (dy->base)
|
|
memcpy (new_base, dy->base,
|
|
- (dy->max > new_size ? dy->max : new_size) * dy->elsize);
|
|
+ (dy->max < new_size ? dy->max : new_size) * dy->elsize);
|
|
dy->base = new_base;
|
|
if (old_base)
|
|
mc_free (old_base);
|
|
@@ -205,9 +206,9 @@
|
|
if (dy->lisp_imp)
|
|
Dynarr_lisp_realloc (dy, newsize);
|
|
else
|
|
- Dynarr_realloc (dy, newsize*dy->elsize);
|
|
+ Dynarr_realloc (dy, newsize);
|
|
#else /* not NEW_GC */
|
|
- Dynarr_realloc (dy, newsize*dy->elsize);
|
|
+ Dynarr_realloc (dy, newsize);
|
|
#endif /* not NEW_GC */
|
|
dy->max = newsize;
|
|
}
|