]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
intl: Fix compilation error from previous commit.
authorBruno Haible <bruno@clisp.org>
Sat, 30 Sep 2023 20:30:45 +0000 (22:30 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 30 Sep 2023 22:36:55 +0000 (00:36 +0200)
* gettext-runtime/intl/dcigettext.c (DCIGETTEXT) [!_LIBC]: Compute the resolved
dirname without using __asprintf.

gettext-runtime/intl/dcigettext.c

index 9a6ae7b16e0346ac461c71ae5b92b2626b09fd4a..0ba129d58e5143502cdfbf3bba96a42e9a81ccc8 100644 (file)
@@ -674,10 +674,30 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
               signal an error but simply return the default
               string.  */
            goto return_untranslated;
+# ifdef _LIBC
          int ret = __asprintf (&xdirname, "%s/%s", cwd, dirname);
          free (cwd);
          if (ret < 0)
            goto return_untranslated;
+# else
+         size_t cwd_len = strlen (cwd);
+         size_t dirname_len = strlen (dirname) + 1;
+         char *resolved_dirname = (char *) malloc (cwd_len + 1 + dirname_len);
+         if (resolved_dirname == NULL)
+           {
+             /* Memory allocation failure.  Don't signal an error
+                but simply return the default string.  */
+             free (cwd);
+             goto return_untranslated;
+           }
+         memcpy (resolved_dirname, cwd, cwd_len);
+         resolved_dirname[cwd_len] = '/';
+         memcpy (resolved_dirname + cwd_len + 1, dirname, dirname_len);
+
+         free (cwd);
+
+         xdirname = resolved_dirname;
+# endif
          dirname = xdirname;
        }
 #endif