On Tuesday 04 November 2014 12:02:08 Mikael Magnusson wrote:
> % wget --local-encoding=blorp google.com
> Conversion from 'blorp' to 'blorp' isn't supported
> zsh: segmentation fault  wget --local-encoding=blorp google.com
>
> (the message should say to 'UTF-8').
>
> % wget --local-encoding= google.com
> converted 'http://google.com' () -> 'http://google.com' (UTF-8)
> ...
> 2014-11-04 09:00:22 (590 KB/s) - 'index.html' saved [17800]
>
> It's unclear what this conversion does.

Thanks for reporting, Mikael.

The 'converted' messages were meant as debug messages. The somehow dropped
into a commit.

The appended patch fixes the sigfault und changes the 'converted' messages
into DEBUG ones. Also the 'Conversion from...' message has been fixed.

Tim
From 15ac4c23912dae187b9887c960321e76b27d75b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim Rühsen?= <[email protected]>
Date: Tue, 4 Nov 2014 12:48:25 +0100
Subject: [PATCH] * iri.c (remote_to_utf8): fix crash on do_conversion()
 failure

---
 src/ChangeLog |  5 +++++
 src/iri.c     | 11 ++++++-----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 5ad7605..dbf7d9b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2014-11-04  Tim Ruehsen  <[email protected]>
+
+	* iri.c (do_conversion): fix quote() misuse
+	* iri.c (remote_to_utf8): fix segfault on do_conversion() error
+
 2014-11-03  Jakub Čajka  <[email protected]>

 	* iri.c (remote_to_utf8): Fixed assumption that char is signed. Fixes
diff --git a/src/iri.c b/src/iri.c
index 11f2bda..dd2806d 100644
--- a/src/iri.c
+++ b/src/iri.c
@@ -123,8 +123,9 @@ do_conversion (const char *tocode, const char *fromcode, char *in, size_t inlen,
   cd = iconv_open (tocode, fromcode);
   if (cd == (iconv_t)(-1))
     {
-      logprintf (LOG_VERBOSE, _("Conversion from %s to %s isn't supported\n"),
-                 quote (opt.locale), quote ("UTF-8"));
+      logprintf (LOG_VERBOSE, _("Conversion from %s to UTF-8 isn't supported\n"),
+                 quote (opt.locale));
+      *out = NULL;
       return false;
     }

@@ -146,7 +147,7 @@ do_conversion (const char *tocode, const char *fromcode, char *in, size_t inlen,
           *(s + len - outlen - done) = '\0';
           xfree(in_save);
           iconv_close(cd);
-          logprintf (LOG_VERBOSE, _("converted '%s' (%s) -> '%s' (%s)\n"), in_org, fromcode, *out, tocode);
+          DEBUGP (("converted '%s' (%s) -> '%s' (%s)\n", in_org, fromcode, *out, tocode));
           return true;
         }

@@ -187,7 +188,7 @@ do_conversion (const char *tocode, const char *fromcode, char *in, size_t inlen,

     xfree(in_save);
     iconv_close(cd);
-    logprintf (LOG_VERBOSE, _("converted '%s' (%s) -> '%s' (%s)\n"), in_org, fromcode, *out, tocode);
+    DEBUGP (("converted '%s' (%s) -> '%s' (%s)\n", in_org, fromcode, *out, tocode));
     return false;
 }

@@ -291,7 +292,7 @@ remote_to_utf8 (struct iri *iri, const char *str, const char **new)
     ret = true;

   /* Test if something was converted */
-  if (!strcmp (str, *new))
+  if (*new && !strcmp (str, *new))
     {
       xfree ((char *) *new);
       return false;
--
2.1.1

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to