U+3002 (ideographic full stop), U+FF0E (fullwidth full stop),
U+FF61 (halfwidth ideographic full stop). */
- if (input[0] == 0)
+ if (input[0] == 0
+ /* Handle explicit zero-length root label. */
+ || (DOTP (input[0]) && input[1] == 0))
{
+#if defined HAVE_STRDUP || defined _LIBC
+ *output = strdup (input);
+ return *output == NULL ? IDNA_MALLOC_ERROR : IDNA_SUCCESS;
+#else
/* Handle implicit zero-length root label. */
*output = malloc (1);
if (!*output)
return IDNA_MALLOC_ERROR;
- strcpy (*output, "");
- return IDNA_SUCCESS;
- }
-
- if (DOTP (input[0]) && input[1] == 0)
- {
- /* Handle explicit zero-length root label. */
- *output = malloc (2);
- if (!*output)
- return IDNA_MALLOC_ERROR;
- strcpy (*output, ".");
+ strcpy (*output, input);
return IDNA_SUCCESS;
+#endif
}
*output = NULL;