--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -1862,7 +1862,11 @@ static int spl_filesystem_file_call(spl_
 
 	result = zend_call_function(&fci, &fcic TSRMLS_CC);
 	
-	ZVAL_ZVAL(return_value, retval, 1, 1);
+	if (result == FAILURE) {
+		RETVAL_FALSE;
+	} else {
+		ZVAL_ZVAL(return_value, retval, 1, 1);
+	}
 
 	efree(params);
 	return result;
