forked from enlightenment/efl
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:
parent
32d52ff563
commit
9a74e6aec4
|
@ -618,7 +618,7 @@ eina_stringshare_printf(const char *fmt, ...)
|
|||
{
|
||||
va_list args;
|
||||
char *tmp = NULL;
|
||||
const char *ret;
|
||||
const char *ret = "";
|
||||
int len;
|
||||
|
||||
if (!fmt)
|
||||
|
@ -628,15 +628,12 @@ eina_stringshare_printf(const char *fmt, ...)
|
|||
len = vasprintf(&tmp, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (len < 1)
|
||||
{
|
||||
free(tmp);
|
||||
return NULL;
|
||||
}
|
||||
if (len < 1) goto on_error;
|
||||
|
||||
ret = eina_stringshare_add_length(tmp, len);
|
||||
free(tmp);
|
||||
|
||||
on_error:
|
||||
free(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -644,7 +641,7 @@ EAPI Eina_Stringshare *
|
|||
eina_stringshare_vprintf(const char *fmt, va_list args)
|
||||
{
|
||||
char *tmp = NULL;
|
||||
const char *ret;
|
||||
const char *ret = "";
|
||||
int len;
|
||||
|
||||
if (!fmt)
|
||||
|
@ -652,15 +649,12 @@ eina_stringshare_vprintf(const char *fmt, va_list args)
|
|||
|
||||
len = vasprintf(&tmp, fmt, args);
|
||||
|
||||
if (len < 1)
|
||||
{
|
||||
free(tmp);
|
||||
return NULL;
|
||||
}
|
||||
if (len < 1) goto on_error;
|
||||
|
||||
ret = eina_stringshare_add_length(tmp, len);
|
||||
free(tmp);
|
||||
|
||||
on_error:
|
||||
free(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -674,17 +668,17 @@ eina_stringshare_nprintf(unsigned int len, const char *fmt, ...)
|
|||
if (!fmt)
|
||||
return NULL;
|
||||
|
||||
if (len < 1)
|
||||
return NULL;
|
||||
if (len == 0)
|
||||
return "";
|
||||
|
||||
tmp = alloca(sizeof(char) * len + 1);
|
||||
tmp = alloca(sizeof(char) * (len + 1));
|
||||
|
||||
va_start(args, fmt);
|
||||
size = vsnprintf(tmp, len, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (size < 1)
|
||||
return NULL;
|
||||
return "";
|
||||
|
||||
return eina_stringshare_add_length(tmp, size);
|
||||
}
|
||||
|
|
|
@ -210,8 +210,10 @@ START_TEST(eina_stringshare_print)
|
|||
const char *t3;
|
||||
|
||||
fail_if(eina_stringshare_printf(0) != NULL);
|
||||
fail_if(eina_stringshare_printf("%s", "") != NULL);
|
||||
fail_if(eina_stringshare_nprintf(0, "%s", "") != NULL);
|
||||
fail_if(eina_stringshare_printf("%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);
|
||||
t2 = my_vprintf("x%sy", TEST1);
|
||||
|
|
Loading…
Reference in New Issue