diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2005-10-17 15:31:10 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2005-10-17 15:31:10 +0000 |
commit | 197142b3e0b887fbb6127e653677aab0222e025c (patch) | |
tree | b501172a3c74e05a5df09fb18bd832bb0d95a1ed /ext/pspell | |
parent | 8f4112bfdd48f02c32b227e700d436417d4d3529 (diff) | |
download | php-git-197142b3e0b887fbb6127e653677aab0222e025c.tar.gz |
MFH: Properly fixed bug #34456 (original patch completely reverted).
Diffstat (limited to 'ext/pspell')
-rw-r--r-- | ext/pspell/pspell.c | 152 |
1 files changed, 43 insertions, 109 deletions
diff --git a/ext/pspell/pspell.c b/ext/pspell/pspell.c index 8e9f5470a6..b337632963 100644 --- a/ext/pspell/pspell.c +++ b/ext/pspell/pspell.c @@ -101,6 +101,22 @@ static void php_pspell_close_config(zend_rsrc_list_entry *rsrc TSRMLS_DC) delete_pspell_config(config); } +#define PSPELL_FETCH_CONFIG \ + convert_to_long_ex(conf); \ + config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type); \ + if (config == NULL || type != le_pspell_config) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(conf)); \ + RETURN_FALSE; \ + } \ + +#define PSPELL_FETCH_MANAGER \ + convert_to_long_ex(scin); \ + manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); \ + if (!manager || type != le_pspell) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); \ + RETURN_FALSE; \ + } \ + /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(pspell) @@ -352,13 +368,7 @@ PHP_FUNCTION(pspell_new_config) WRONG_PARAM_COUNT; } - convert_to_long_ex(conf); - config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type); - - if (config == NULL || type != le_pspell_config) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(conf)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; ret = new_pspell_manager(config); @@ -387,13 +397,9 @@ PHP_FUNCTION(pspell_check) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); convert_to_string_ex(word); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + + PSPELL_FETCH_MANAGER; if(pspell_manager_check(manager, Z_STRVAL_PP(word))){ RETURN_TRUE; @@ -419,13 +425,8 @@ PHP_FUNCTION(pspell_suggest) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); convert_to_string_ex(word); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; array_init(return_value); @@ -457,14 +458,9 @@ PHP_FUNCTION(pspell_store_replacement) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); convert_to_string_ex(miss); convert_to_string_ex(corr); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; pspell_manager_store_replacement(manager, Z_STRVAL_PP(miss), Z_STRVAL_PP(corr)); if(pspell_manager_error_number(manager) == 0){ @@ -490,13 +486,8 @@ PHP_FUNCTION(pspell_add_to_personal) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); convert_to_string_ex(word); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; /*If the word is empty, we have to return; otherwise we'll segfault! ouch!*/ if(Z_STRLEN_PP(word) == 0){ @@ -527,13 +518,8 @@ PHP_FUNCTION(pspell_add_to_session) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); convert_to_string_ex(word); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; /*If the word is empty, we have to return; otherwise we'll segfault! ouch!*/ if(Z_STRLEN_PP(word) == 0){ @@ -564,12 +550,7 @@ PHP_FUNCTION(pspell_clear_session) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; pspell_manager_clear_session(manager); if(pspell_manager_error_number(manager) == 0){ @@ -595,12 +576,7 @@ PHP_FUNCTION(pspell_save_wordlist) WRONG_PARAM_COUNT; } - convert_to_long_ex(scin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL result index", Z_LVAL_PP(scin)); - RETURN_FALSE; - } + PSPELL_FETCH_MANAGER; pspell_manager_save_all_word_lists(manager); @@ -694,25 +670,18 @@ PHP_FUNCTION(pspell_config_create) PHP_FUNCTION(pspell_config_runtogether) { int type; - zval **sccin, **runtogether; + zval **conf, **runtogether; int argc; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&runtogether) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc,&conf,&runtogether) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); convert_to_boolean_ex(runtogether); pspell_config_replace(config, "run-together", Z_LVAL_PP(runtogether) ? "true" : "false"); @@ -725,25 +694,18 @@ PHP_FUNCTION(pspell_config_runtogether) PHP_FUNCTION(pspell_config_mode) { int type; - zval **sccin, **mode; + zval **conf, **mode; int argc; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&mode) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc,&conf,&mode) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); convert_to_long_ex(mode); /* First check what mode we want (how many suggestions) */ @@ -764,29 +726,22 @@ PHP_FUNCTION(pspell_config_mode) PHP_FUNCTION(pspell_config_ignore) { int type; - zval **sccin, **pignore; + zval **conf, **pignore; int argc; int loc = PSPELL_LARGEST_WORD; char ignore_str[PSPELL_LARGEST_WORD + 1]; long ignore = 0L; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&pignore) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc,&conf,&pignore) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); convert_to_long_ex(pignore); ignore = Z_LVAL_PP(pignore); @@ -814,24 +769,17 @@ PHP_FUNCTION(pspell_config_ignore) static void pspell_config_path(INTERNAL_FUNCTION_PARAMETERS, char *option) { int type; - zval **sccin, **value; + zval **conf, **value; int argc; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc, &sccin, &value) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc, &conf, &value) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if (!manager) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); convert_to_string_ex(value); if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(value), NULL, CHECKUID_CHECK_FILE_AND_DIR))) { @@ -876,25 +824,18 @@ PHP_FUNCTION(pspell_config_data_dir) PHP_FUNCTION(pspell_config_repl) { int type; - zval **sccin, **repl; + zval **conf, **repl; int argc; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&repl) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc,&conf,&repl) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); pspell_config_replace(config, "save-repl", "true"); convert_to_string_ex(repl); @@ -918,25 +859,18 @@ PHP_FUNCTION(pspell_config_repl) PHP_FUNCTION(pspell_config_save_repl) { int type; - zval **sccin, **save; + zval **conf, **save; int argc; - PspellManager *manager; PspellConfig *config; argc = ZEND_NUM_ARGS(); - if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&save) == FAILURE) { + if (argc != 2 || zend_get_parameters_ex(argc,&conf,&save) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long_ex(sccin); - manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type); - if(!manager){ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a PSPELL config index", Z_LVAL_PP(sccin)); - RETURN_FALSE; - } + PSPELL_FETCH_CONFIG; - config = pspell_manager_config(manager); convert_to_boolean_ex(save); pspell_config_replace(config, "save-repl", Z_LVAL_PP(save) ? "true" : "false"); |