]> granicus.if.org Git - php/commitdiff
Oracle seems to return non zero terminated strings or strings with only 1 zero at...
authorAntony Dovgal <tony2001@php.net>
Wed, 28 Mar 2007 23:05:36 +0000 (23:05 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 28 Mar 2007 23:05:36 +0000 (23:05 +0000)
surely u_strlen() doesn't like it, so lets use OCIStringSize() and avoid u_strlen()

ext/oci8/oci8_collection.c

index 5ab6481748c52b59a97d4f26c379484edf9ef5e7..30018105b57e21965593ec858c1a797fe5c0a011 100644 (file)
@@ -503,14 +503,17 @@ int php_oci_collection_element_get(php_oci_collection *collection, long index, z
                {
                        OCIString *oci_string = *(OCIString **)element;
                        text *str;
+                       ub4 str_len;
                        
                        PHP_OCI_CALL_RETURN(str, OCIStringPtr, (connection->env, oci_string));
                        
                        if (str) {
+                               PHP_OCI_CALL_RETURN(str_len, OCIStringSize, (connection->env, oci_string));
+
                                if (UG(unicode)) {
-                                       ZVAL_UNICODE(*result_element, (UChar *)str, 1);
+                                       ZVAL_UNICODEL(*result_element, (UChar *)str, TEXT_CHARS(str_len), 1);
                                } else { 
-                                       ZVAL_STRING(*result_element, str, 1);
+                                       ZVAL_STRINGL(*result_element, str, str_len, 1);
                                }
                        }
                        return 0;