Mercurial > emacs
comparison src/alloc.c @ 81272:1842d7137ff2
(init_strings): Initialize canonical empty strings.
(make_uninit_string, make_uninit_multibyte_string): Return appropriate
canonical empty string when the requested size is 0.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Fri, 08 Jun 2007 19:59:46 +0000 |
parents | a6fbfb6a0580 |
children | 3b39669cb653 cc587bfd19ca e9f94688a064 |
comparison
equal
deleted
inserted
replaced
81271:0aafd69cb508 | 81272:1842d7137ff2 |
---|---|
1754 total_strings = total_free_strings = total_string_size = 0; | 1754 total_strings = total_free_strings = total_string_size = 0; |
1755 oldest_sblock = current_sblock = large_sblocks = NULL; | 1755 oldest_sblock = current_sblock = large_sblocks = NULL; |
1756 string_blocks = NULL; | 1756 string_blocks = NULL; |
1757 n_string_blocks = 0; | 1757 n_string_blocks = 0; |
1758 string_free_list = NULL; | 1758 string_free_list = NULL; |
1759 empty_unibyte_string = make_pure_string ("", 0, 0, 0); | |
1760 empty_multibyte_string = make_pure_string ("", 0, 0, 1); | |
1759 } | 1761 } |
1760 | 1762 |
1761 | 1763 |
1762 #ifdef GC_CHECK_STRING_BYTES | 1764 #ifdef GC_CHECK_STRING_BYTES |
1763 | 1765 |
2477 Lisp_Object | 2479 Lisp_Object |
2478 make_uninit_string (length) | 2480 make_uninit_string (length) |
2479 int length; | 2481 int length; |
2480 { | 2482 { |
2481 Lisp_Object val; | 2483 Lisp_Object val; |
2484 | |
2485 if (!length) | |
2486 return empty_unibyte_string; | |
2482 val = make_uninit_multibyte_string (length, length); | 2487 val = make_uninit_multibyte_string (length, length); |
2483 STRING_SET_UNIBYTE (val); | 2488 STRING_SET_UNIBYTE (val); |
2484 return val; | 2489 return val; |
2485 } | 2490 } |
2486 | 2491 |
2495 Lisp_Object string; | 2500 Lisp_Object string; |
2496 struct Lisp_String *s; | 2501 struct Lisp_String *s; |
2497 | 2502 |
2498 if (nchars < 0) | 2503 if (nchars < 0) |
2499 abort (); | 2504 abort (); |
2505 if (!nbytes) | |
2506 return empty_multibyte_string; | |
2500 | 2507 |
2501 s = allocate_string (); | 2508 s = allocate_string (); |
2502 allocate_string_data (s, nchars, nbytes); | 2509 allocate_string_data (s, nchars, nbytes); |
2503 XSETSTRING (string, s); | 2510 XSETSTRING (string, s); |
2504 string_chars_consed += nbytes; | 2511 string_chars_consed += nbytes; |