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;