]> granicus.if.org Git - php/commitdiff
Fixed bug #68638 pg_update() fails to store infinite values.
authorWilliam Felipe Welter <william.welter@4linux.com.br>
Wed, 4 Feb 2015 00:47:05 +0000 (22:47 -0200)
committerWilliam Felipe Welter <william.welter@4linux.com.br>
Wed, 4 Feb 2015 00:47:05 +0000 (22:47 -0200)
Regex to check float values changed to accept "infinity" values
and ignore case. Quotes are added to prevent syntax error on
PostgreSQL.

ext/pgsql/pgsql.c

index 16ce7bfb7f9c21a6f354f2d47102aaeacfae3a4d..e8070acbb2a939bc3bb555b04a2bd70e720c6602 100644 (file)
@@ -5590,11 +5590,12 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
                                                }
                                                else {
                                                        /* FIXME: better regex must be used */
-                                                       if (php_pgsql_convert_match(Z_STRVAL_PP(val), Z_STRLEN_PP(val), "^([+-]{0,1}[0-9]+)|([+-]{0,1}[0-9]*[\\.][0-9]+)|([+-]{0,1}[0-9]+[\\.][0-9]*)$", 0 TSRMLS_CC) == FAILURE) {
+                                                       if (php_pgsql_convert_match(Z_STRVAL_PP(val), Z_STRLEN_PP(val), "^([+-]{0,1}[0-9]+)|([+-]{0,1}[0-9]*[\\.][0-9]+)|([+-]{0,1}[0-9]+[\\.][0-9]*)|([+-]{0,1}(INF)(inity){0,1})$", 1 TSRMLS_CC) == FAILURE) {
                                                                err = 1;
                                                        }
                                                        else {
                                                                ZVAL_STRING(new_val, Z_STRVAL_PP(val), 1);
+                                                               php_pgsql_add_quotes(new_val, 1 TSRMLS_CC);
                                                        }
                                                }
                                                break;