Fix T100527: Right click in the attribute name field crashes blender.
`UI_context_active_but_prop_get_templateID` became much more widely used with recent rBfec254364884, which revealed that it did not do any check on actual type of data it accesses, resulting easily in undefined behavior. Now also check the callback function pointer, this should be safe enough. Patch by @Severin (Julian Eisel), many thanks!
This commit is contained in:
parent
f29f023017
commit
c973d333da
Notes:
blender-bot
2023-12-08 16:39:08 +01:00
Referenced by commit 13b3c408e3
, Fix T101510: Incorrect context for running data unlink from template ID
Referenced by issue #101510, Regression: Incorrect context for running data unlink
Referenced by issue #100527, Regression: Right click in the attribute name field crashes blender
|
@ -571,8 +571,11 @@ static uiBlock *id_search_menu(bContext *C, ARegion *region, void *arg_litem)
|
|||
/** \name ID Template
|
||||
* \{ */
|
||||
|
||||
/* This is for browsing and editing the ID-blocks used */
|
||||
static void template_id_cb(bContext *C, void *arg_litem, void *arg_event);
|
||||
|
||||
/**
|
||||
* This is for browsing and editing the ID-blocks used.
|
||||
*/
|
||||
void UI_context_active_but_prop_get_templateID(bContext *C,
|
||||
PointerRNA *r_ptr,
|
||||
PropertyRNA **r_prop)
|
||||
|
@ -582,7 +585,7 @@ void UI_context_active_but_prop_get_templateID(bContext *C,
|
|||
memset(r_ptr, 0, sizeof(*r_ptr));
|
||||
*r_prop = NULL;
|
||||
|
||||
if (but && but->func_argN) {
|
||||
if (but && (but->funcN == template_id_cb) && but->func_argN) {
|
||||
TemplateID *template_ui = but->func_argN;
|
||||
*r_ptr = template_ui->ptr;
|
||||
*r_prop = template_ui->prop;
|
||||
|
|
Loading…
Reference in New Issue