Greg Stein wrote on Tue, May 17, 2011 at 07:12:58 -0400:
> On Tue, May 17, 2011 at 06:55, <danielsh_at_apache.org> wrote:
> >...
> > +++ subversion/trunk/subversion/libsvn_subr/deprecated.c Tue May 17 10:55:51 2011
> > @@ -630,6 +630,17 @@ svn_opt_print_generic_help(const char *h
> >
> > /*** From io.c ***/
> > svn_error_t *
> > +svn_io_file_create(const char *file,
> > + const char *contents,
> > + apr_pool_t *pool)
> > +{
> > + const svn_string_t *contents_string;
> > +
> > + contents_string = (contents ? svn_string_create(contents, pool) : NULL);
> > + return svn_io_file_create2(file, contents_string, pool);
>
> contents_string can go on the stack, rather than allocated:
>
> contents_string.data = contents;
> contents_string.len = strlen(contents);
> return svn_error_return(svn_io_file_create2(file, &contents_string, pool);
>
> ... tho it makes the NULL concept a bit more difficult.
>
I didn't realize that svn_string_*create() didn't do that for me.
The patch seems straightforward,
[[[
Index: subversion/libsvn_subr/deprecated.c
===================================================================
--- subversion/libsvn_subr/deprecated.c (revision 1104124)
+++ subversion/libsvn_subr/deprecated.c (working copy)
@@ -634,10 +634,17 @@ svn_io_file_create(const char *file,
const char *contents,
apr_pool_t *pool)
{
- const svn_string_t *contents_string;
+ if (contents && *contents)
+ {
+ const svn_string_t contents_string;
+ contents_string.data = contents;
+ contents_string.len = strlen(contents);
+ return svn_io_file_create2(file, &contents_string, pool);
+ }
+ else
+ {
+ return svn_io_file_create2(file, NULL, pool);
+ }
-
- contents_string = (contents ? svn_string_create(contents, pool) : NULL);
- return svn_io_file_create2(file, contents_string, pool);
}
svn_error_t *
]]]
but I wonder if we shouldn't be teaching the svn_string_create() API to
optionally return a shallow copy. (which isn't as good as stack, but
still saves the pstrdup())
> >...
>
> Cheers,
> -g
Received on 2011-05-17 14:14:06 CEST