[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58664] trunk/blender/source/blender/ editors: correct sloppy NULL checks, in interface code:
Campbell Barton
ideasman42 at gmail.com
Sat Jul 27 16:17:20 CEST 2013
Revision: 58664
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58664
Author: campbellbarton
Date: 2013-07-27 14:17:20 +0000 (Sat, 27 Jul 2013)
Log Message:
-----------
correct sloppy NULL checks, in interface code:
- uiPupMenuBegin was checking for NULL title but would still crash if it were NULL.
- now tag the function as 'nonnull' and remove NULL checks. make sure NULL isnt passed to it.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/UI_interface.h
trunk/blender/source/blender/editors/interface/interface_handlers.c
trunk/blender/source/blender/editors/interface/interface_regions.c
Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h 2013-07-27 14:05:59 UTC (rev 58663)
+++ trunk/blender/source/blender/editors/include/UI_interface.h 2013-07-27 14:17:20 UTC (rev 58664)
@@ -327,7 +327,11 @@
typedef struct uiPopupMenu uiPopupMenu;
-struct uiPopupMenu *uiPupMenuBegin(struct bContext *C, const char *title, int icon);
+struct uiPopupMenu *uiPupMenuBegin(struct bContext *C, const char *title, int icon)
+#ifdef __GNUC__
+__attribute__((nonnull))
+#endif
+;
void uiPupMenuEnd(struct bContext *C, struct uiPopupMenu *head);
struct uiLayout *uiPupMenuLayout(uiPopupMenu *head);
Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-07-27 14:05:59 UTC (rev 58663)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-07-27 14:17:20 UTC (rev 58664)
@@ -4944,7 +4944,6 @@
uiPopupMenu *pup;
uiLayout *layout;
bool is_array, is_array_component;
- const char *name;
uiStringInfo label = {BUT_GET_LABEL, NULL};
/* if ((but->rnapoin.data && but->rnaprop) == 0 && but->optype == NULL)*/
@@ -4957,12 +4956,11 @@
button_timers_tooltip_remove(C, but);
+ /* highly unlikely getting the label ever fails */
uiButGetStrInfo(C, but, &label, NULL);
- name = label.strinfo;
- pup = uiPupMenuBegin(C, name, ICON_NONE);
+ pup = uiPupMenuBegin(C, label.strinfo ? label.strinfo : "", ICON_NONE);
layout = uiPupMenuLayout(pup);
-
if (label.strinfo)
MEM_freeN(label.strinfo);
Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c 2013-07-27 14:05:59 UTC (rev 58663)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c 2013-07-27 14:17:20 UTC (rev 58664)
@@ -2528,7 +2528,7 @@
uiStyle *style = UI_GetStyleDraw();
uiPopupMenu *pup = MEM_callocN(sizeof(uiPopupMenu), "popup menu");
uiBut *but;
-
+
pup->block = uiBeginBlock(C, NULL, __func__, UI_EMBOSSP);
pup->block->flag |= UI_BLOCK_POPUP_MEMORY;
pup->block->puphash = ui_popup_menu_hash(title);
@@ -2542,7 +2542,7 @@
pup->block->handle = MEM_callocN(sizeof(uiPopupBlockHandle), "uiPopupBlockHandle");
/* create title button */
- if (title && title[0]) {
+ if (title[0]) {
char titlestr[256];
if (icon) {
More information about the Bf-blender-cvs
mailing list