summaryrefslogtreecommitdiff
path: root/ext/pspell
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2005-10-17 15:31:10 +0000
committerIlia Alshanetsky <iliaa@php.net>2005-10-17 15:31:10 +0000
commit197142b3e0b887fbb6127e653677aab0222e025c (patch)
treeb501172a3c74e05a5df09fb18bd832bb0d95a1ed /ext/pspell
parent8f4112bfdd48f02c32b227e700d436417d4d3529 (diff)
downloadphp-git-197142b3e0b887fbb6127e653677aab0222e025c.tar.gz
MFH: Properly fixed bug #34456 (original patch completely reverted).
Diffstat (limited to 'ext/pspell')
-rw-r--r--ext/pspell/pspell.c152
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");