Return-Path: X-Original-To: apmail-subversion-commits-archive@minotaur.apache.org Delivered-To: apmail-subversion-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C607B109EB for ; Fri, 6 Dec 2013 00:11:07 +0000 (UTC) Received: (qmail 19077 invoked by uid 500); 6 Dec 2013 00:11:07 -0000 Delivered-To: apmail-subversion-commits-archive@subversion.apache.org Received: (qmail 19024 invoked by uid 500); 6 Dec 2013 00:11:07 -0000 Mailing-List: contact commits-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@subversion.apache.org Delivered-To: mailing list commits@subversion.apache.org Received: (qmail 19017 invoked by uid 99); 6 Dec 2013 00:11:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Dec 2013 00:11:07 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 Dec 2013 00:11:06 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 7E65923889E3; Fri, 6 Dec 2013 00:10:46 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1548334 - in /subversion/trunk/subversion/svn: log-cmd.c mergeinfo-cmd.c Date: Fri, 06 Dec 2013 00:10:46 -0000 To: commits@subversion.apache.org From: breser@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131206001046.7E65923889E3@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: breser Date: Fri Dec 6 00:10:46 2013 New Revision: 1548334 URL: http://svn.apache.org/r1548334 Log: Allocate the merge_stack array for the log receivers on demand. This ends up saving a tiny amount of memory when log is called without -g and for mergeinfo --log. * subversion/svn/log-cmd.c (svn_cl__log_entry_receiver, svn_cl__log_entry_receiver_xml): Check the merge_stack member before use and make an array if it hasn't already been made before adding a member. (svn_cl__log): Initialize the merge_stack member of the baton to NULL. * subversion/svn/mergeinfo-cmd.c (mergeinfo_log): Initialize the merge_stack member of the baton to NULL. Modified: subversion/trunk/subversion/svn/log-cmd.c subversion/trunk/subversion/svn/mergeinfo-cmd.c Modified: subversion/trunk/subversion/svn/log-cmd.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/log-cmd.c?rev=1548334&r1=1548333&r2=1548334&view=diff ============================================================================== --- subversion/trunk/subversion/svn/log-cmd.c (original) +++ subversion/trunk/subversion/svn/log-cmd.c Fri Dec 6 00:10:46 2013 @@ -307,7 +307,9 @@ svn_cl__log_entry_receiver(void *baton, if (! SVN_IS_VALID_REVNUM(log_entry->revision)) { - apr_array_pop(lb->merge_stack); + if (lb->merge_stack) + apr_array_pop(lb->merge_stack); + return SVN_NO_ERROR; } @@ -331,7 +333,12 @@ svn_cl__log_entry_receiver(void *baton, log_entry->changed_paths2, pool)) { if (log_entry->has_children) - APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + { + if (! lb->merge_stack) + lb->merge_stack = apr_array_make(lb->pool, 1, sizeof(svn_revnum_t)); + + APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + } return SVN_NO_ERROR; } @@ -389,7 +396,7 @@ svn_cl__log_entry_receiver(void *baton, } } - if (lb->merge_stack->nelts > 0) + if (lb->merge_stack && lb->merge_stack->nelts > 0) { int i; @@ -437,7 +444,12 @@ svn_cl__log_entry_receiver(void *baton, } if (log_entry->has_children) - APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + { + if (! lb->merge_stack) + lb->merge_stack = apr_array_make(lb->pool, 1, sizeof(svn_revnum_t)); + + APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + } return SVN_NO_ERROR; } @@ -504,7 +516,8 @@ svn_cl__log_entry_receiver_xml(void *bat { svn_xml_make_close_tag(&sb, pool, "logentry"); SVN_ERR(svn_cl__error_checked_fputs(sb->data, stdout)); - apr_array_pop(lb->merge_stack); + if (lb->merge_stack) + apr_array_pop(lb->merge_stack); return SVN_NO_ERROR; } @@ -515,7 +528,12 @@ svn_cl__log_entry_receiver_xml(void *bat log_entry->changed_paths2, pool)) { if (log_entry->has_children) - APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + { + if (! lb->merge_stack) + lb->merge_stack = apr_array_make(lb->pool, 1, sizeof(svn_revnum_t)); + + APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + } return SVN_NO_ERROR; } @@ -624,7 +642,12 @@ svn_cl__log_entry_receiver_xml(void *bat } if (log_entry->has_children) - APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + { + if (! lb->merge_stack) + lb->merge_stack = apr_array_make(lb->pool, 1, sizeof(svn_revnum_t)); + + APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision; + } else svn_xml_make_close_tag(&sb, pool, "logentry"); @@ -752,7 +775,7 @@ svn_cl__log(apr_getopt_t *os, lb.depth = opt_state->depth == svn_depth_unknown ? svn_depth_infinity : opt_state->depth; lb.diff_extensions = opt_state->extensions; - lb.merge_stack = apr_array_make(pool, 0, sizeof(svn_revnum_t)); + lb.merge_stack = NULL; lb.search_patterns = opt_state->search_patterns; lb.pool = pool; Modified: subversion/trunk/subversion/svn/mergeinfo-cmd.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/mergeinfo-cmd.c?rev=1548334&r1=1548333&r2=1548334&view=diff ============================================================================== --- subversion/trunk/subversion/svn/mergeinfo-cmd.c (original) +++ subversion/trunk/subversion/svn/mergeinfo-cmd.c Fri Dec 6 00:10:46 2013 @@ -304,7 +304,7 @@ mergeinfo_log(svn_boolean_t finding_merg baton->show_diff = FALSE; baton->depth = depth; baton->diff_extensions = NULL; - baton->merge_stack = apr_array_make(pool, 0, sizeof(svn_revnum_t)); + baton->merge_stack = NULL; baton->search_patterns = NULL; baton->pool = pool; log_receiver_baton = baton;