eina: all Eina_Stringshare printf variant now return empty string as expected.

Previously Eina_Stringshare printf variant where returning NULL with ("%s", ""). This
is highly disturbing as you would have gotten "(null)", if you asked for ("s", NULL).
To clarify and make things logical, we now return "".
This commit is contained in:
Cedric BAIL 2015-01-08 12:34:20 +01:00
parent 32d52ff563
commit 9a74e6aec4
2 changed files with 16 additions and 20 deletions

View File

@ -618,7 +618,7 @@ eina_stringshare_printf(const char *fmt, ...)
{ {
va_list args; va_list args;
char *tmp = NULL; char *tmp = NULL;
const char *ret; const char *ret = "";
int len; int len;
if (!fmt) if (!fmt)
@ -628,15 +628,12 @@ eina_stringshare_printf(const char *fmt, ...)
len = vasprintf(&tmp, fmt, args); len = vasprintf(&tmp, fmt, args);
va_end(args); va_end(args);
if (len < 1) if (len < 1) goto on_error;
{
free(tmp);
return NULL;
}
ret = eina_stringshare_add_length(tmp, len); ret = eina_stringshare_add_length(tmp, len);
free(tmp);
on_error:
free(tmp);
return ret; return ret;
} }
@ -644,7 +641,7 @@ EAPI Eina_Stringshare *
eina_stringshare_vprintf(const char *fmt, va_list args) eina_stringshare_vprintf(const char *fmt, va_list args)
{ {
char *tmp = NULL; char *tmp = NULL;
const char *ret; const char *ret = "";
int len; int len;
if (!fmt) if (!fmt)
@ -652,15 +649,12 @@ eina_stringshare_vprintf(const char *fmt, va_list args)
len = vasprintf(&tmp, fmt, args); len = vasprintf(&tmp, fmt, args);
if (len < 1) if (len < 1) goto on_error;
{
free(tmp);
return NULL;
}
ret = eina_stringshare_add_length(tmp, len); ret = eina_stringshare_add_length(tmp, len);
free(tmp);
on_error:
free(tmp);
return ret; return ret;
} }
@ -674,17 +668,17 @@ eina_stringshare_nprintf(unsigned int len, const char *fmt, ...)
if (!fmt) if (!fmt)
return NULL; return NULL;
if (len < 1) if (len == 0)
return NULL; return "";
tmp = alloca(sizeof(char) * len + 1); tmp = alloca(sizeof(char) * (len + 1));
va_start(args, fmt); va_start(args, fmt);
size = vsnprintf(tmp, len, fmt, args); size = vsnprintf(tmp, len, fmt, args);
va_end(args); va_end(args);
if (size < 1) if (size < 1)
return NULL; return "";
return eina_stringshare_add_length(tmp, size); return eina_stringshare_add_length(tmp, size);
} }

View File

@ -210,8 +210,10 @@ START_TEST(eina_stringshare_print)
const char *t3; const char *t3;
fail_if(eina_stringshare_printf(0) != NULL); fail_if(eina_stringshare_printf(0) != NULL);
fail_if(eina_stringshare_printf("%s", "") != NULL); fail_if(eina_stringshare_printf("%s", "") == NULL);
fail_if(eina_stringshare_nprintf(0, "%s", "") != NULL); fail_if(strlen(eina_stringshare_printf("%s", "")) > 0);
fail_if(eina_stringshare_nprintf(0, "%s", "") == NULL);
fail_if(strlen(eina_stringshare_nprintf(0, "%s", "")) > 0);
t1 = eina_stringshare_printf("x%sy", TEST1); t1 = eina_stringshare_printf("x%sy", TEST1);
t2 = my_vprintf("x%sy", TEST1); t2 = my_vprintf("x%sy", TEST1);