scm_to_stringn: Avoid passing NULL to c_strcasecmp.
authorMark H Weaver <mhw@netris.org>
Wed, 29 May 2019 19:31:42 +0000 (15:31 -0400)
committerMark H Weaver <mhw@netris.org>
Tue, 18 Jun 2019 06:05:20 +0000 (02:05 -0400)
Reported by Massimiliano Gubinelli <m.gubinelli@gmail.com> in
<https://lists.gnu.org/archive/html/guile-user/2019-05/msg00070.html>.

* libguile/strings.c (scm_to_stringn): Check for (encoding == NULL)
before passing it to 'c_strcasecmp'.  Eliminate redundant 'enc'
variable.

libguile/strings.c

index 9497a3fe118927871084bca63c8f2c07da563bc4..180fae1ceab7af6230822948005c87bff5db5da4 100644 (file)
@@ -2190,11 +2190,13 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
   char *buf;
   size_t ilen, len, i;
   int ret;
-  const char *enc;
 
   if (!scm_is_string (str))
     scm_wrong_type_arg_msg (NULL, 0, str, "string");
 
+  if (encoding == NULL)
+    encoding = "ISO-8859-1";
+
   if (c_strcasecmp (encoding, "UTF-8") == 0)
     /* This is the most common case--e.g., when calling libc bindings
        while using a UTF-8 locale.  */
@@ -2242,13 +2244,10 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
 
   buf = NULL;
   len = 0;
-  enc = encoding;
-  if (enc == NULL)
-    enc = "ISO-8859-1";
   if (scm_i_is_narrow_string (str))
     {
       ret = mem_iconveh (scm_i_string_chars (str), ilen,
-                         "ISO-8859-1", enc,
+                         "ISO-8859-1", encoding,
                          (enum iconv_ilseq_handler) handler, NULL,
                          &buf, &len);
 
@@ -2261,7 +2260,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
     }
   else
     {
-      buf = u32_conv_to_encoding (enc,
+      buf = u32_conv_to_encoding (encoding,
                                   (enum iconv_ilseq_handler) handler,
                                   (scm_t_uint32 *) scm_i_string_wide_chars (str),
                                   ilen,