Author: ek.kato
Date: Mon Nov 5 02:31:54 2007
New Revision: 5040
Modified:
sigscheme-trunk/src/string-procedure.c
Log:
* src/string-procedure.c (scm_p_string_setx) : Don't realloc the
string buffer when a new char is shorter than original one as
FreeBSD 7's realloc(3) invalidate string beyond the new
size.
Modified: sigscheme-trunk/src/string-procedure.c
==============================================================================
--- sigscheme-trunk/src/string-procedure.c (original)
+++ sigscheme-trunk/src/string-procedure.c Mon Nov 5 02:31:54 2007
@@ -238,8 +238,11 @@
suffix_len = strlen(suffix_src);
new_str_len = prefix_len + ch_len + suffix_len;
- new_str = scm_realloc(c_str, new_str_len + sizeof(""));
-
+ if (ch_len > orig_ch_len) {
+ new_str = scm_realloc(c_str, new_str_len + sizeof(""));
+ } else {
+ new_str = c_str;
+ }
suffix_src = &new_str[prefix_len + orig_ch_len];
suffix_dst = &new_str[prefix_len + ch_len];
memmove(suffix_dst, suffix_src, suffix_len);