helly           Tue Apr 10 15:59:29 2007 UTC

  Modified files:              
    /php-src/ext/sybase_ct      php_sybase_ct.c 
  Log:
  - MFB Synch
  
http://cvs.php.net/viewvc.cgi/php-src/ext/sybase_ct/php_sybase_ct.c?r1=1.117&r2=1.118&diff_format=u
Index: php-src/ext/sybase_ct/php_sybase_ct.c
diff -u php-src/ext/sybase_ct/php_sybase_ct.c:1.117 
php-src/ext/sybase_ct/php_sybase_ct.c:1.118
--- php-src/ext/sybase_ct/php_sybase_ct.c:1.117 Sat Feb 24 16:25:55 2007
+++ php-src/ext/sybase_ct/php_sybase_ct.c       Tue Apr 10 15:59:29 2007
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_sybase_ct.c,v 1.117 2007/02/24 16:25:55 helly Exp $ */
+/* $Id: php_sybase_ct.c,v 1.118 2007/04/10 15:59:29 helly Exp $ */
 
 
 #ifdef HAVE_CONFIG_H
@@ -135,6 +135,9 @@
        return 0;
 }
 
+#define efree_n(x)  { efree(x); x = NULL; }
+#define efree_if(x) if (x) efree_n(x)
+
 static void _free_sybase_result(sybase_result *result)
 {
        int i, j;
@@ -157,6 +160,19 @@
                efree(result->fields);
        }
 
+       if (result->tmp_buffer) {
+               for (i=0; i<result->num_fields; i++) {
+                       efree(result->tmp_buffer[i]);
+               }
+               efree(result->tmp_buffer);
+       }
+
+       efree_if(result->lengths);
+       efree_if(result->indicators);
+       efree_if(result->datafmt);
+       efree_if(result->numerics);
+       efree_if(result->types);
+
        efree(result);
 }
 
@@ -246,7 +262,7 @@
        TSRMLS_FETCH();
 
        if (CS_SEVERITY(errmsg->msgnumber) >= SybCtG(min_client_severity)) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  Client 
message:  %s (severity %d)", errmsg->msgstring, CS_SEVERITY(errmsg->msgnumber));
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  Client 
message:  %s (severity %ld)", errmsg->msgstring, 
CS_SEVERITY(errmsg->msgnumber));
        }
        STR_FREE(SybCtG(server_message));
        SybCtG(server_message) = estrdup(errmsg->msgstring);
@@ -351,8 +367,8 @@
 
        /* Spit out a warning if neither of them has handled this message */
        if (!handled) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  Server 
message:  %s (severity %d, procedure %s)",
-                               srvmsg->text, srvmsg->severity, 
((srvmsg->proclen>0) ? srvmsg->proc : "N/A"));
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  Server 
message:  %s (severity %ld, procedure %s)",
+                               srvmsg->text, (long)srvmsg->severity, 
((srvmsg->proclen>0) ? srvmsg->proc : "N/A"));
        }
 
        return CS_SUCCEED;
@@ -599,9 +615,7 @@
                                convert_to_string_ex(yyhost);
                                host = Z_STRVAL_PP(yyhost);
                                user=passwd=charset=appname=NULL;
-                               hashed_details_length = Z_STRLEN_PP(yyhost)+6+5;
-                               hashed_details = (char *) 
emalloc(hashed_details_length+1);
-                               sprintf(hashed_details, "sybase_%s____", 
Z_STRVAL_PP(yyhost));
+                               hashed_details_length = 
spprintf(&hashed_details, 0, "sybase_%s____", Z_STRVAL_PP(yyhost));
                        }
                        break;
                case 2: {
@@ -615,9 +629,7 @@
                                host = Z_STRVAL_PP(yyhost);
                                user = Z_STRVAL_PP(yyuser);
                                passwd=charset=appname=NULL;
-                               hashed_details_length = 
Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+6+5;
-                               hashed_details = (char *) 
emalloc(hashed_details_length+1);
-                               sprintf(hashed_details, "sybase_%s_%s___", 
Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser));
+                               hashed_details_length = 
spprintf(&hashed_details, 0, "sybase_%s_%s___", Z_STRVAL_PP(yyhost), 
Z_STRVAL_PP(yyuser));
                        }
                        break;
                case 3: {
@@ -633,9 +645,7 @@
                                user = Z_STRVAL_PP(yyuser);
                                passwd = Z_STRVAL_PP(yypasswd);
                                charset=appname=NULL;
-                               hashed_details_length = 
Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+6+5;
-                               hashed_details = (char *) 
emalloc(hashed_details_length+1);
-                               sprintf(hashed_details, "sybase_%s_%s_%s__", 
Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd));
+                               hashed_details_length = 
spprintf(&hashed_details, 0, "sybase_%s_%s_%s__", Z_STRVAL_PP(yyhost), 
Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd));
                        }
                        break;
                case 4: {
@@ -653,9 +663,7 @@
                                passwd = Z_STRVAL_PP(yypasswd);
                                charset = Z_STRVAL_PP(yycharset);
                                appname=NULL;
-                               hashed_details_length = 
Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+Z_STRLEN_PP(yycharset)+6+5;
-                               hashed_details = (char *) 
emalloc(hashed_details_length+1);
-                               sprintf(hashed_details, "sybase_%s_%s_%s_%s_", 
Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), 
Z_STRVAL_PP(yycharset));
+                               hashed_details_length = 
spprintf(&hashed_details, 0, "sybase_%s_%s_%s_%s_", Z_STRVAL_PP(yyhost), 
Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset));
                        }
                        break;
                case 5: {
@@ -674,9 +682,7 @@
                                passwd = Z_STRVAL_PP(yypasswd);
                                charset = Z_STRVAL_PP(yycharset);
                                appname = Z_STRVAL_PP(yyappname);
-                               hashed_details_length = 
Z_STRLEN_PP(yyhost)+Z_STRLEN_PP(yyuser)+Z_STRLEN_PP(yypasswd)+Z_STRLEN_PP(yycharset)+Z_STRLEN_PP(yyappname)+6+5;
-                               hashed_details = (char *) 
emalloc(hashed_details_length+1);
-                               sprintf(hashed_details, 
"sybase_%s_%s_%s_%s_%s", Z_STRVAL_PP(yyhost), Z_STRVAL_PP(yyuser), 
Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset), Z_STRVAL_PP(yyappname));
+                               hashed_details_length = 
spprintf(&hashed_details, 0, "sybase_%s_%s_%s_%s_%s", Z_STRVAL_PP(yyhost), 
Z_STRVAL_PP(yyuser), Z_STRVAL_PP(yypasswd), Z_STRVAL_PP(yycharset), 
Z_STRVAL_PP(yyappname));
                        }
                        break;
                default:
@@ -1025,15 +1031,15 @@
        CS_RETCODE retcode;
        CS_INT restype;
        
-       efree(result->datafmt);
-       efree(result->lengths);
-       efree(result->indicators);
-       efree(result->numerics);
-       efree(result->types);
+       efree_n(result->datafmt);
+       efree_n(result->lengths);
+       efree_n(result->indicators);
+       efree_n(result->numerics);
+       efree_n(result->types);
        for (i=0; i<result->num_fields; i++) {
                efree(result->tmp_buffer[i]);
        }
-       efree(result->tmp_buffer);
+       efree_n(result->tmp_buffer);
 
        /* Indicate we have read all rows */
        result->sybase_ptr->active_result_index= 0;
@@ -1115,7 +1121,7 @@
 #define RETURN_DOUBLE_VAL(result, buf, length)          \
        if ((length - 1) <= EG(precision)) {                \
                errno = 0;                                      \
-               Z_DVAL(result) = strtod(buf, NULL);             \
+               Z_DVAL(result) = zend_strtod(buf, NULL);        \
                if (errno != ERANGE) {                          \
                        Z_TYPE(result) = IS_DOUBLE;                 \
                } else {                                        \
@@ -1137,18 +1143,11 @@
        }
        
        if (numrows!=-1) numrows+= result->num_rows;
-       while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, 
CS_UNUSED, NULL))==CS_SUCCEED
-                       || retcode==CS_ROW_FAIL) {
-               /*
-               if (retcode==CS_ROW_FAIL) {
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  
Error reading row %d", result->num_rows);
-               }
-               */
-               
+       while ((retcode=ct_fetch(result->sybase_ptr->cmd, CS_UNUSED, CS_UNUSED, 
CS_UNUSED, NULL))==CS_SUCCEED) {
                result->num_rows++;
                i= result->store ? result->num_rows- 1 : 0;
                if (i >= result->blocks_initialized*SYBASE_ROWS_BLOCK) {
-                       result->data = (zval **) erealloc(result->data, 
sizeof(zval *)*SYBASE_ROWS_BLOCK*(++result->blocks_initialized));
+                       result->data = (zval **) safe_erealloc(result->data, 
SYBASE_ROWS_BLOCK*(++result->blocks_initialized), sizeof(zval *), 0);
                }
                if (result->store || 1 == result->num_rows) {
                        result->data[i] = (zval *) safe_emalloc(sizeof(zval), 
result->num_fields, 0);
@@ -1201,7 +1200,11 @@
                }
                if (numrows!=-1 && result->num_rows>=numrows) break;
        }
-       
+
+       if (retcode==CS_ROW_FAIL) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase:  Error 
reading row %d", result->num_rows);
+               return retcode;
+       }
        result->last_retcode= retcode;
        switch (retcode) {
                case CS_END_DATA:

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

Reply via email to