Annotation of embedaddon/php/ext/standard/tests/file/bug52820.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: Bug #52820 (writes to fopencookie FILE* not commited when seeking the stream)
3: --SKIPIF--
4: <?php
1.1.1.2 ! misho 5: if (!function_exists('leak_variable'))
! 6: die("skip only for debug builds");
1.1 misho 7: /* unfortunately no standard function does a cast to FILE*, so we need
8: * curl to test this */
9: if (!extension_loaded("curl")) exit("skip curl extension not loaded");
10: $handle=curl_init('http://127.0.0.1:37349/');
11: curl_setopt($handle, CURLOPT_VERBOSE, true);
12: curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
13: if (!curl_setopt($handle, CURLOPT_STDERR, fopen("php://memory", "w+")))
14: die("skip fopencookie not supported on this platform");
15: --FILE--
16: <?php
17: function do_stuff($url) {
18: $handle=curl_init('http://127.0.0.1:37349/');
19: curl_setopt($handle, CURLOPT_VERBOSE, true);
20: curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
21: curl_setopt($handle, CURLOPT_STDERR, $o = fopen($url, "w+"));
22: curl_exec($handle);
23: echo "About to rewind!\n";
24: rewind($o);
25: echo stream_get_contents($o);
26: return $o;
27: }
28:
29: echo "temp stream (close after):\n";
30: fclose(do_stuff("php://temp"));
31:
32: echo "\nmemory stream (close after):\n";
33: fclose(do_stuff("php://memory"));
34:
1.1.1.2 ! misho 35: echo "\ntemp stream (leak):\n";
! 36: leak_variable(do_stuff("php://temp"), true);
! 37:
! 38: echo "\nmemory stream (leak):\n";
! 39: leak_variable(do_stuff("php://memory"), true);
! 40:
1.1 misho 41: echo "\nDone.\n";
1.1.1.2 ! misho 42: --EXPECTF--
1.1 misho 43: temp stream (close after):
44: About to rewind!
1.1.1.2 ! misho 45: * About to connect() to 127.0.0.1 port 37349%r.*%r
1.1 misho 46: * Trying 127.0.0.1... * Connection refused
47: * couldn't connect to host
48: * Closing connection #0
49:
50: memory stream (close after):
51: About to rewind!
1.1.1.2 ! misho 52: * About to connect() to 127.0.0.1 port 37349%r.*%r
! 53: * Trying 127.0.0.1... * Connection refused
! 54: * couldn't connect to host
! 55: * Closing connection #0
! 56:
! 57: temp stream (leak):
! 58: About to rewind!
! 59: * About to connect() to 127.0.0.1 port 37349%r.*%r
! 60: * Trying 127.0.0.1... * Connection refused
! 61: * couldn't connect to host
! 62: * Closing connection #0
! 63:
! 64: memory stream (leak):
! 65: About to rewind!
! 66: * About to connect() to 127.0.0.1 port 37349%r.*%r
1.1 misho 67: * Trying 127.0.0.1... * Connection refused
68: * couldn't connect to host
69: * Closing connection #0
70:
71: Done.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>