Browse Source

Fixed bug #21144

PHP-5
Moriyoshi Koizumi 24 years ago
parent
commit
dcc030f5ef
  1. 8
      ext/ncurses/ncurses.c
  2. 9
      ext/ncurses/ncurses_functions.c
  3. 1
      ext/ncurses/php_ncurses.h

8
ext/ncurses/ncurses.c

@ -84,11 +84,19 @@ PHP_INI_END()
#define PHP_NCURSES_CONST(x) REGISTER_LONG_CONSTANT("NCURSES_"#x, x, CONST_CS | CONST_PERSISTENT)
#define PHP_NCURSES_FKEY_CONST(x) REGISTER_LONG_CONSTANT("NCURSES_KEY_F"#x, KEY_F0 + x, CONST_CS | CONST_PERSISTENT)
/* {{{ php_ncurses_globals_ctor */
static void php_ncurses_globals_ctor(zend_ncurses_globals *pglobals)
{
pglobals->registered_constants = 0;
pglobals->is_initialised = 0;
}
/* }}} */
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(ncurses)
{
ZEND_INIT_MODULE_GLOBALS(ncurses, php_ncurses_globals_ctor, NULL);
/* color constants */
PHP_NCURSES_CONST(COLOR_BLACK);
PHP_NCURSES_CONST(COLOR_RED);

9
ext/ncurses/ncurses_functions.c

@ -131,6 +131,8 @@ PHP_FUNCTION(ncurses_init)
(void) nonl(); /* tell curses not to do NL->CR/NL on output */
(void) cbreak(); /* take input chars one at a time, no wait for \n */
NCURSES_G(is_initialised) = 1;
if (!NCURSES_G(registered_constants)) {
zend_constant c;
@ -315,7 +317,12 @@ PHP_FUNCTION(ncurses_refresh)
Starts using colors */
PHP_FUNCTION(ncurses_start_color)
{
RETURN_LONG(start_color());
if (NCURSES_G(is_initialised)) {
RETURN_LONG(start_color());
} else {
php_error(E_WARNING, "ncurses library is not initialised by ncurses_init().");
RETURN_FALSE;
}
}
/* }}} */

1
ext/ncurses/php_ncurses.h

@ -48,6 +48,7 @@ PHP_RSHUTDOWN_FUNCTION(ncurses);
PHP_MINFO_FUNCTION(ncurses);
ZEND_BEGIN_MODULE_GLOBALS(ncurses)
int is_initialised;
int registered_constants;
ZEND_END_MODULE_GLOBALS(ncurses)

Loading…
Cancel
Save