diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/alloc.c b/src/alloc.c index 1092a34801a..41b2f9e77d2 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -2002,9 +2002,9 @@ allocate_string_data (struct Lisp_String *s, | |||
| 2002 | mallopt (M_MMAP_MAX, MMAP_MAX_AREAS); | 2002 | mallopt (M_MMAP_MAX, MMAP_MAX_AREAS); |
| 2003 | #endif | 2003 | #endif |
| 2004 | 2004 | ||
| 2005 | b->next_free = b->data; | 2005 | data = b->data; |
| 2006 | b->data[0].string = NULL; | ||
| 2007 | b->next = large_sblocks; | 2006 | b->next = large_sblocks; |
| 2007 | b->next_free = data; | ||
| 2008 | large_sblocks = b; | 2008 | large_sblocks = b; |
| 2009 | } | 2009 | } |
| 2010 | else if (current_sblock == NULL | 2010 | else if (current_sblock == NULL |
| @@ -2014,9 +2014,9 @@ allocate_string_data (struct Lisp_String *s, | |||
| 2014 | { | 2014 | { |
| 2015 | /* Not enough room in the current sblock. */ | 2015 | /* Not enough room in the current sblock. */ |
| 2016 | b = lisp_malloc (SBLOCK_SIZE, MEM_TYPE_NON_LISP); | 2016 | b = lisp_malloc (SBLOCK_SIZE, MEM_TYPE_NON_LISP); |
| 2017 | b->next_free = b->data; | 2017 | data = b->data; |
| 2018 | b->data[0].string = NULL; | ||
| 2019 | b->next = NULL; | 2018 | b->next = NULL; |
| 2019 | b->next_free = data; | ||
| 2020 | 2020 | ||
| 2021 | if (current_sblock) | 2021 | if (current_sblock) |
| 2022 | current_sblock->next = b; | 2022 | current_sblock->next = b; |
| @@ -2025,14 +2025,16 @@ allocate_string_data (struct Lisp_String *s, | |||
| 2025 | current_sblock = b; | 2025 | current_sblock = b; |
| 2026 | } | 2026 | } |
| 2027 | else | 2027 | else |
| 2028 | b = current_sblock; | 2028 | { |
| 2029 | b = current_sblock; | ||
| 2030 | data = b->next_free; | ||
| 2031 | } | ||
| 2029 | 2032 | ||
| 2030 | data = b->next_free; | 2033 | data->string = s; |
| 2031 | b->next_free = (sdata *) ((char *) data + needed + GC_STRING_EXTRA); | 2034 | b->next_free = (sdata *) ((char *) data + needed + GC_STRING_EXTRA); |
| 2032 | 2035 | ||
| 2033 | MALLOC_UNBLOCK_INPUT; | 2036 | MALLOC_UNBLOCK_INPUT; |
| 2034 | 2037 | ||
| 2035 | data->string = s; | ||
| 2036 | s->data = SDATA_DATA (data); | 2038 | s->data = SDATA_DATA (data); |
| 2037 | #ifdef GC_CHECK_STRING_BYTES | 2039 | #ifdef GC_CHECK_STRING_BYTES |
| 2038 | SDATA_NBYTES (data) = nbytes; | 2040 | SDATA_NBYTES (data) = nbytes; |