fix bug when there is no file extension.

This was spotted by a segmentation faults on systems where sprintf()
don't handle NULL as "%s" (Solaris, BSDs), but it makes no sense to
lookup "*(null)" as extension on Linux either.

Reported by: mcalamell



SVN revision: 40120
This commit is contained in:
Gustavo Sverzut Barbieri 2009-04-16 22:17:50 +00:00
parent cf1e0172cf
commit 9cc29ad360
1 changed files with 13 additions and 9 deletions

View File

@ -7659,8 +7659,8 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
E_Zone *zone; E_Zone *zone;
Eina_List *sel, *l = NULL; Eina_List *sel, *l = NULL;
int x, y, can_w, can_w2, protect; int x, y, can_w, can_w2, protect;
char buf[PATH_MAX]; char buf[PATH_MAX], *ext;
sd = ic->sd; sd = ic->sd;
mn = e_menu_new(); mn = e_menu_new();
@ -7878,15 +7878,19 @@ _e_fm2_icon_menu(E_Fm2_Icon *ic, Evas_Object *obj, unsigned int timestamp)
} }
/* see if we have any glob handlers registered for this file */ /* see if we have any glob handlers registered for this file */
snprintf(buf, sizeof(buf), "*%s", strrchr(ic->info.file, '.')); ext = strrchr(ic->info.file, '.');
l = e_fm2_mime_handler_glob_handlers_get(buf); if (ext)
if (l)
{ {
_e_fm2_icon_realpath(ic, buf, sizeof(buf)); snprintf(buf, sizeof(buf), "*%s", ext);
_e_fm2_context_menu_append(obj, buf, l, mn, ic); l = e_fm2_mime_handler_glob_handlers_get(buf);
eina_list_free(l); if (l)
{
_e_fm2_icon_realpath(ic, buf, sizeof(buf));
_e_fm2_context_menu_append(obj, buf, l, mn, ic);
eina_list_free(l);
}
} }
if (sd->icon_menu.end.func) if (sd->icon_menu.end.func)
sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info)); sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info));
} }