From: Enlightenment S. <no-...@en...> - 2009-04-16 22:18:05
|
Log: 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 Author: barbieri Date: 2009-04-16 15:17:50 -0700 (Thu, 16 Apr 2009) New Revision: 40120 Modified: trunk/e/src/bin/e_fm.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2009-04-16 21:28:30 UTC (rev 40119) +++ trunk/e/src/bin/e_fm.c 2009-04-16 22:17:50 UTC (rev 40120) @@ -7659,8 +7659,8 @@ E_Zone *zone; Eina_List *sel, *l = NULL; int x, y, can_w, can_w2, protect; - char buf[PATH_MAX]; - + char buf[PATH_MAX], *ext; + sd = ic->sd; mn = e_menu_new(); @@ -7878,15 +7878,19 @@ } /* see if we have any glob handlers registered for this file */ - snprintf(buf, sizeof(buf), "*%s", strrchr(ic->info.file, '.')); - l = e_fm2_mime_handler_glob_handlers_get(buf); - if (l) + ext = strrchr(ic->info.file, '.'); + if (ext) { - _e_fm2_icon_realpath(ic, buf, sizeof(buf)); - _e_fm2_context_menu_append(obj, buf, l, mn, ic); - eina_list_free(l); + snprintf(buf, sizeof(buf), "*%s", ext); + l = e_fm2_mime_handler_glob_handlers_get(buf); + 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) sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn, &(ic->info)); } |