You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/10/18 23:30:46 UTC

svn commit: r1185877 - /subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c

Author: stefan2
Date: Tue Oct 18 21:30:46 2011
New Revision: 1185877

URL: http://svn.apache.org/viewvc?rev=1185877&view=rev
Log:
On integrate-string-improvements branch, make the new string creation
API comply with the implicit assumption that buffer[len] is writable.
Otherwise, some functions will SEGFAULT on those empty strings.

* subversion/libsvn_subr/svn_string.c
  (svn_stringbuf_create_empty): return a writable empty string instead
   of a constant one.

Modified:
    subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c

Modified: subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c
URL: http://svn.apache.org/viewvc/subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c?rev=1185877&r1=1185876&r2=1185877&view=diff
==============================================================================
--- subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c (original)
+++ subversion/branches/integrate-string-improvements/subversion/libsvn_subr/svn_string.c Tue Oct 18 21:30:46 2011
@@ -246,10 +246,17 @@ create_stringbuf(char *data, apr_size_t 
   return new_string;
 }
 
+static char empty_buffer[1] = {0};
+  
 svn_stringbuf_t *
 svn_stringbuf_create_empty(apr_pool_t *pool)
 {
-  return create_stringbuf((char*)"", 0, 0, pool);
+  /* All instances share the same zero-length buffer.
+   * Some algorithms, however, assume that they may write
+   * the terminating zero. So, empty_buffer must be writable 
+   * (a simple (char *)"" will cause SEGFAULTs). */
+
+  return create_stringbuf(empty_buffer, 0, 0, pool);
 }
 
 svn_stringbuf_t *