basename may modify its argument, so we need to strdup before calling
basename.
SVN revision: 48128
static const char *
_e_exehist_normalize_exe(const char *exe)
{
- char *base, *cp, *space = NULL;
+ char *base, *buf, *cp, *space = NULL;
const char *ret;
Eina_Bool flag = EINA_FALSE;
- base = basename((char *)exe);
- if ((base[0] == '.') && (base[1] == '\0')) return NULL;
+ buf = strdup(exe);
+ base = basename(buf);
+ if ((base[0] == '.') && (base[1] == '\0'))
+ {
+ free(buf);
+ return NULL;
+ }
- base = strdup(base);
cp = base;
while (*cp)
{
if (space) *space = '\0';
ret = eina_stringshare_add(base);
- free(base);
+ free(buf);
return ret;
}