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;
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue