[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pecl-cvs
Subject:    [PECL-CVS] com =?UTF-8?Q?pecl/search=5Fengine/solr=3A=20Fix=20Bug=20=23=36=38=33=30?= =?UTF-8?Q?=37=
From:       omars () php ! net
Date:       2014-10-26 1:37:19
Message-ID: php-mail-64b5e0061c159df2e49cdff7ab10bd351520724809 () git ! php ! net
[Download RAW message or body]

Commit:    60cff757b66c686c287ee05bb5891ee0b6708e60
Author:    Omar Shaban <omars@php.net>         Sun, 26 Oct 2014 03:37:19 +0200
Parents:   d22be8615f64956cc9bb0e96310ea09033e9c759
Branches:  dismax

Link:       http://git.php.net/?p=pecl/search_engine/solr.git;a=commitdiff;h=60cff757b66c686c287ee05bb5891ee0b6708e60


Log:
Fix Bug #68307 Solr Parameter Operator Override Issues in arg list type

Fixed in the scope of DisMaxQuery::addPhraseField()

Bugs:
https://bugs.php.net/68307

Changed paths:
  M  php_solr_dismax_query.c


Diff:
diff --git a/php_solr_dismax_query.c b/php_solr_dismax_query.c
index c711405..41e3f2e 100644
--- a/php_solr_dismax_query.c
+++ b/php_solr_dismax_query.c
@@ -195,6 +195,7 @@ PHP_METHOD(SolrDisMaxQuery, addPhraseField)
     char * separator = "^";
     solr_char_t * delimiter_override = "";
     solr_char_t *boost_slop_chr = NULL;
+    solr_string_t boost_slop_buffer;
 
     if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|z", &field_name, \
&field_name_len, &boost, &slop) == FAILURE)  {
@@ -208,37 +209,33 @@ PHP_METHOD(SolrDisMaxQuery, addPhraseField)
         boost_str = Z_STRVAL_P(boost);
     }
 
-    if(slop != NULL){
+    if (slop != NULL) {
         convert_to_string(slop);
         slop_str = Z_STRVAL_P(slop);
     }
 
-    if(slop != NULL && boost !=NULL)
+    if (slop != NULL && boost !=NULL)
     {
-        boost_slop_chr = emalloc(sizeof(slop_str)+sizeof(boost_str)-2);
-        memset(boost_slop_chr,0, sizeof(slop_str)+sizeof(boost_str)-2);
         delimiter_override = "~";
-        if(sprintf((char *)boost_slop_chr,"%s^%s", slop_str, boost_str) == FAILURE)
-        {
-            efree(boost_slop_chr);
-            RETURN_NULL();
-            return;
-        }
+        memset(&boost_slop_buffer, 0, sizeof(solr_string_t));
+        solr_string_appends(&boost_slop_buffer, (solr_char_t *)slop_str , \
Z_STRLEN_P(slop)); +        solr_string_appendc(&boost_slop_buffer, '^');
+        solr_string_appends(&boost_slop_buffer, boost_str , Z_STRLEN_P(boost));
         add_result = solr_add_arg_list_param_ex(
-                    getThis(),pname, pname_len, field_name, field_name_len,
-                    boost_slop_chr, sizeof(boost_slop_chr)-1,' ',*separator, \
*delimiter_override +                    getThis(), pname, pname_len, field_name, \
field_name_len, +                    boost_slop_buffer.str, boost_slop_buffer.len,' \
',*separator, *delimiter_override  TSRMLS_CC
         );
-        efree(boost_slop_chr);
-    }else{
+
+        solr_string_free(&boost_slop_buffer);
+    } else {
         add_result = solr_add_arg_list_param(
-                    getThis(),pname, pname_len, field_name, field_name_len,
+                    getThis(), pname, pname_len, field_name, field_name_len,
                     boost_str, Z_STRLEN_P(boost),' ',*separator
                     TSRMLS_CC
         );
     }
-
-
+//
     if(add_result == FAILURE)
     {
         RETURN_NULL();


--
PECL CVS Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic