[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