]> sjero.net Git - wget/commitdiff
Do not free/duplicate current/remote encoding string if they aren't changed
authorSaint Xavier <wget@sxav.eu>
Mon, 21 Jul 2008 17:34:22 +0000 (19:34 +0200)
committerSaint Xavier <wget@sxav.eu>
Mon, 21 Jul 2008 17:34:22 +0000 (19:34 +0200)
src/iri.c

index c28d4f517367c36b84d5185e6edb3a8cd0eff1d8..d23615ae7fb4942de22f8ac5a68ddff9f17d10d3 100644 (file)
--- a/src/iri.c
+++ b/src/iri.c
@@ -337,18 +337,27 @@ void set_current_charset (char *charset)
 {
   /*printf("[ current = `%s'\n", charset);*/
   if (current)
-    xfree (current);
+    {
+      /* Do nothing if already equal */
+      if (!strcasecmp (current, charset))
+        return;
+      xfree (current);
+    }
 
   current = charset ? xstrdup (charset) : NULL;
 }
 
 void set_current_as_locale (void)
 {
+  /* sXXXav : assert opt.locale NULL ? */
   /*printf("[ current = locale = `%s'\n", opt.locale);*/
   if (current)
-    xfree (current);
+    {
+      if (!strcasecmp (current, opt.locale))
+        return;
+      xfree (current);
+    }
 
-  /* sXXXav : assert opt.locale NULL ? */
   current = xstrdup (opt.locale);
 }
 
@@ -357,8 +366,12 @@ set_remote_charset (char *charset)
 {
   /*printf("[ remote = `%s'\n", charset);*/
   if (remote)
-    xfree (remote);
-
+    {
+      /* Do nothing if already equal */
+      if (!strcasecmp (remote, charset))
+        return;
+      xfree (remote);
+    }
   remote = charset ? xstrdup (charset) : NULL;
 }
 
@@ -367,7 +380,12 @@ set_remote_as_current (void)
 {
   /*printf("[ remote = current = `%s'\n", current);*/
   if (remote)
-    xfree (remote);
+    {
+      /* Do nothing if already equal */
+      if (current && !strcasecmp (remote, current))
+        return;
+      xfree (remote);
+    }
 
   remote = current ? xstrdup (current) : NULL;
 }