summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerick Rethans <derick@php.net>2004-04-01 08:54:44 +0000
committerDerick Rethans <derick@php.net>2004-04-01 08:54:44 +0000
commit88c17817a90e1c6a559ca128550b88ec0cd2171e (patch)
tree864fa8897404b0c3f26bd1065cb1a0cc4f767d8b
parentfac9416797aec0a59fbe34b8fe9187c198e9b61e (diff)
downloadphp-git-88c17817a90e1c6a559ca128550b88ec0cd2171e.tar.gz
- Fixed bug #27822 (is_resource() returns TRUE for closed resources)
-rw-r--r--ext/standard/tests/general_functions/is_resource.phpt10
-rw-r--r--ext/standard/type.c7
2 files changed, 17 insertions, 0 deletions
diff --git a/ext/standard/tests/general_functions/is_resource.phpt b/ext/standard/tests/general_functions/is_resource.phpt
new file mode 100644
index 0000000000..d44461e442
--- /dev/null
+++ b/ext/standard/tests/general_functions/is_resource.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #27822: is_resource() returns TRUE for closed resources
+--FILE--
+<?php
+ $f = fopen(__FILE__, 'r');
+ fclose($f);
+ var_dump(is_resource($f));
+?>
+--EXPECT--
+bool(false)
diff --git a/ext/standard/type.c b/ext/standard/type.c
index 296353decd..3005df1dce 100644
--- a/ext/standard/type.c
+++ b/ext/standard/type.c
@@ -218,6 +218,13 @@ static void php_is_type(INTERNAL_FUNCTION_PARAMETERS, int type)
RETURN_FALSE;
}
}
+ if (type == IS_RESOURCE) {
+ char *type_name;
+ type_name = zend_rsrc_list_get_rsrc_type(Z_LVAL_PP(arg) TSRMLS_CC);
+ if (!type_name) {
+ RETURN_FALSE;
+ }
+ }
RETURN_TRUE;
} else {
RETURN_FALSE;