Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-07-27 18:17:20 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-27 18:17:20 +0400
commitd7ff7ad3e9da1a7fd322e37382d4c28f7b84b036 (patch)
tree4aabdefc7f0a17e40f17210f4bf4c11c4ff179e3 /source/blender
parent6aa001f48dc9358a2183b62e03a95b19af2cdca7 (diff)
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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/include/UI_interface.h6
-rw-r--r--source/blender/editors/interface/interface_handlers.c6
-rw-r--r--source/blender/editors/interface/interface_regions.c4
3 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index e5cc0dd8ea7..2daab072435 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -327,7 +327,11 @@ typedef void (*uiMenuHandleFunc)(struct bContext *C, void *arg, int event);
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);
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index c60e533551b..8efad17133f 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -4944,7 +4944,6 @@ static bool ui_but_menu(bContext *C, uiBut *but)
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 @@ static bool ui_but_menu(bContext *C, uiBut *but)
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);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 9c6a606333d..3405d81e04a 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -2528,7 +2528,7 @@ uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon)
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 @@ uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon)
pup->block->handle = MEM_callocN(sizeof(uiPopupBlockHandle), "uiPopupBlockHandle");
/* create title button */
- if (title && title[0]) {
+ if (title[0]) {
char titlestr[256];
if (icon) {