Browse Source

Prevent possible problems with two resource ids referencing the same

panel.
migration/unlabaled-1.1.2
Wez Furlong 24 years ago
parent
commit
388bfe5ffe
  1. 32
      ext/ncurses/ncurses_functions.c

32
ext/ncurses/ncurses_functions.c

@ -2061,7 +2061,8 @@ PHP_FUNCTION(ncurses_new_panel)
efree(panel);
RETURN_FALSE;
} else {
ZEND_REGISTER_RESOURCE(return_value, panel, le_ncurses_panels);
long id = ZEND_REGISTER_RESOURCE(return_value, panel, le_ncurses_panels);
set_panel_userptr(*panel, (void*)id);
}
}
@ -2196,7 +2197,7 @@ PHP_FUNCTION(ncurses_panel_above)
{
zval *phandle = NULL;
PANEL **panel;
PANEL **above = (PANEL **)emalloc(sizeof(PANEL *));
PANEL *above;
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r!", &phandle)) {
return;
@ -2204,16 +2205,18 @@ PHP_FUNCTION(ncurses_panel_above)
if (phandle) {
FETCH_PANEL(panel, &phandle);
*above = panel_above(*panel);
above = panel_above(*panel);
} else {
*above = panel_above((PANEL *)0);
above = panel_above((PANEL *)0);
}
if (*above == NULL) {
efree(above);
if (above) {
long id = (long)panel_userptr(above);
zend_list_addref(id);
RETURN_RESOURCE(id);
} else {
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, above, le_ncurses_panels);
}
/* }}} */
@ -2223,7 +2226,7 @@ PHP_FUNCTION(ncurses_panel_below)
{
zval *phandle = NULL;
PANEL **panel;
PANEL **below = (PANEL **)emalloc(sizeof(PANEL *));
PANEL *below;
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r!", &phandle)) {
return;
@ -2231,16 +2234,17 @@ PHP_FUNCTION(ncurses_panel_below)
if (phandle) {
FETCH_PANEL(panel, &phandle);
*below = panel_below(*panel);
below = panel_below(*panel);
} else {
*below = panel_below((PANEL *)0);
below = panel_below((PANEL *)0);
}
if (*below == NULL) {
efree(below);
if (below) {
long id = (long)panel_userptr(below);
zend_list_addref(id);
RETURN_RESOURCE(id);
} else {
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, below, le_ncurses_panels);
}
/* }}} */

Loading…
Cancel
Save