Author: stefan2
Date: Thu Apr 12 20:44:33 2012
New Revision: 1325501

URL: http://svn.apache.org/viewvc?rev=1325501&view=rev
Log:
Minor optimization for parsing (near-empty) config files.
That is a particularly frequent case with default auth files.

* subversion/libsvn_subr/config.c
  (svn_config_get): if we couldn't find the option, try to expand 
   the default value only if it could contain placeholders

Modified:
    subversion/trunk/subversion/libsvn_subr/config.c

Modified: subversion/trunk/subversion/libsvn_subr/config.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config.c?rev=1325501&r1=1325500&r2=1325501&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config.c Thu Apr 12 20:44:33 2012
@@ -562,6 +562,7 @@ svn_config_get(svn_config_t *cfg, const 
                const char *section, const char *option,
                const char *default_value)
 {
+  *valuep = default_value;
   if (cfg)
     {
       cfg_section_t *sec;
@@ -571,23 +572,21 @@ svn_config_get(svn_config_t *cfg, const 
           make_string_from_option(valuep, cfg, sec, opt, NULL);
         }
       else
-        {
-          apr_pool_t *tmp_pool = svn_pool_create(cfg->x_pool);
-          const char *x_default;
-          expand_option_value(cfg, sec, default_value, &x_default, tmp_pool);
-          if (x_default)
-            {
-              svn_stringbuf_set(cfg->tmp_value, x_default);
-              *valuep = cfg->tmp_value->data;
-            }
-          else
-            *valuep = default_value;
-          svn_pool_destroy(tmp_pool);
-        }
-    }
-  else
-    {
-      *valuep = default_value;
+        /* before attempting to expand an option, check for the placeholder.
+         * If none is there, there is no point in calling expand_option_value.
+         */
+        if (default_value && strchr(default_value, '%'))
+          {
+            apr_pool_t *tmp_pool = svn_pool_create(cfg->x_pool);
+            const char *x_default;
+            expand_option_value(cfg, sec, default_value, &x_default, tmp_pool);
+            if (x_default)
+              {
+                svn_stringbuf_set(cfg->tmp_value, x_default);
+                *valuep = cfg->tmp_value->data;
+              }
+            svn_pool_destroy(tmp_pool);
+          }
     }
 }
 


Reply via email to