ZVAL_FALSE(value);
return 1;
} else {
- ZVAL_STRINGL(value, lob_buffer, lob_length, 0);
+ if (lob_length > 0) {
+ ZVAL_STRINGL(value, lob_buffer, lob_length, 0);
+ }
+ else {
+ ZVAL_EMPTY_STRING(value);
+ }
return 0;
}
} else {
if (php_oci_lob_read(descriptor, -1, 0, &buffer, &buffer_len TSRMLS_CC)) {
RETURN_FALSE;
}
- RETURN_STRINGL(buffer, buffer_len, 0);
+ if (buffer_len > 0) {
+ RETURN_STRINGL(buffer, buffer_len, 0);
+ }
+ else {
+ RETURN_EMPTY_STRING();
+ }
}
/* }}} */
if (php_oci_lob_read(descriptor, length, descriptor->lob_current_position, &buffer, &buffer_len TSRMLS_CC)) {
RETURN_FALSE;
+ }
+ if (buffer_len > 0) {
+ RETURN_STRINGL(buffer, buffer_len, 0);
+ }
+ else {
+ RETURN_EMPTY_STRING();
}
- RETURN_STRINGL(buffer, buffer_len, 0);
}
/* }}} */
if (php_oci_lob_get_length(descriptor, &length TSRMLS_CC)) {
return 1;
}
+
+ if (length <= 0) {
+ return 0;
+ }
if (offset > length) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset must be less than size of the LOB");