[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: svn commit: r1485007 - /subversion/branches/invoke-diff-cmd-feature/subversion/libsvn_subr/io.c

From: Bert Huijben <bert_at_qqmail.nl>
Date: Wed, 22 May 2013 10:50:17 +0200

> -----Original Message-----
> From: Philip Martin [mailto:philip.martin_at_wandisco.com]
> Sent: woensdag 22 mei 2013 10:46
> To: dev_at_subversion.apache.org
> Subject: Re: svn commit: r1485007 - /subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c
>
> gbg_at_apache.org writes:
>
> > Author: gbg
> > Date: Tue May 21 22:57:23 2013
> > New Revision: 1485007
> >
> > URL: http://svn.apache.org/r1485007
> > Log:
> > On the invoke-diff-cmd branch: Repair erroneous initialization.
> >
> > * subversion/svn/io.c
> >
> > (svn_io_run_external_diff): Change pcalloc to palloc call.
> >
> > Modified:
> > subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c
> >
> > Modified: subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c
> > URL: http://svn.apache.org/viewvc/subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c?rev=1485007&r1=1485006&r2=1485007
> &view=diff
> >
> ==========================================================
> ====================
> > --- subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c (original)
> > +++ subversion/branches/invoke-diff-cmd-
> feature/subversion/libsvn_subr/io.c Tue May 21 22:57:23 2013
> > @@ -3036,7 +3036,7 @@ svn_io_run_external_diff(const char *dir
> > for (i = 0, size = 0; cmd[i]; i++)
> > size += strlen(cmd[i]) + 1;
> >
> > - failed_command = apr_pcalloc(pool, size * sizeof(char *));
> > + failed_command = apr_palloc(pool, size * sizeof(char *));
> >
> > for (i = 0; cmd[i]; i++)
> > {
> >
>
> That's not right. You have calculated 'size' by summing strlen to give
> you the total text length. Multiplying the text length by the sizeof a
> pointer is wrong. You could multiply by sizeof(char) but that is 1. You
> need to add +1 for the terminating null byte.
>
> However this is an error path so I'd go for simplicity rather than
> efficiency:
>
> const char *failed_command = "";
> for (i = 0; cmd[i]; ++i)
> {
> failed_command = apr_pstrcat(pool, failed_command, cmd[i]);
> failed_command = apr_pstrcat(pool, failed_command, " ");

Note that apr_pstrcat needs a final NULL argument :)

So you could use apr_pstrcat(pool, failed_command, " ", cmd[i], NULL);

        Bert
> }
>
> or:
>
> const char *failed_command = "";
> for (i = 0; cmd[i]; ++i)
> failed_command = apr_psprintf(pool, "%s %s", failed_command,
> cmd[i]);
>
>
>
> --
> Certified & Supported Apache Subversion Downloads:
> http://www.wandisco.com/subversion/download
Received on 2013-05-22 10:51:23 CEST

This is an archived mail posted to the Subversion Dev mailing list.