]> granicus.if.org Git - php/commitdiff
Tell the diff by returning NULL, if system has no ODBC data sources
authorAnatol Belski <ab@php.net>
Wed, 20 Dec 2017 21:32:10 +0000 (22:32 +0100)
committerAnatol Belski <ab@php.net>
Wed, 20 Dec 2017 21:32:54 +0000 (22:32 +0100)
ext/odbc/php_odbc.c
ext/odbc/tests/odbc_data_source_001.phpt

index a2eb8ee41b3ba88e3a1be64fa19218b04824aee4..1cb127a012949b7b7f2a4f592a8203b073644127 100644 (file)
@@ -1592,7 +1592,11 @@ PHP_FUNCTION(odbc_data_source)
                        (SQLSMALLINT)sizeof(desc),
                        &len2);
 
-       if (rc != SQL_SUCCESS) {
+       if (SQL_NO_DATA == rc) {
+               /* System has no data sources, no error. Signal it by returning NULL,
+                       not false. */
+               RETURN_NULL();
+       } else if (rc != SQL_SUCCESS) {
                /* ummm.... he did it */
                odbc_sql_error(conn, SQL_NULL_HSTMT, "SQLDataSources");
                RETURN_FALSE;
index b3e29dde5c9a35f089aceb04f09af8089a0fe8a2..6900f13205e6529daa896037efff0a5b35b17549 100644 (file)
@@ -1,7 +1,12 @@
 --TEST--
 odbc_data_source(): Basic test
 --SKIPIF--
-<?php include 'skipif.inc'; ?>
+<?php
+       include 'skipif.inc';
+       if (odbc_data_source($conn, SQL_FETCH_FIRST) === NULL) {
+               die("skip no data sources defined on this system");
+       }
+?>
 --FILE--
 <?php