From b034032ae2d3c623de53b1f2d6e4a0e8a94116cd Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Wed, 14 Sep 2011 01:45:57 +0000 Subject: [PATCH] - Fixed memory leak when calling SessionHandler::open() several times --- ext/session/mod_files.c | 3 +++ .../tests/sessionhandler_open_001.phpt | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 ext/session/tests/sessionhandler_open_001.phpt diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index c3c35093c3..b0687fac15 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -311,6 +311,9 @@ PS_OPEN_FUNC(files) data->basedir_len = strlen(save_path); data->basedir = estrndup(save_path, data->basedir_len); + if (PS_GET_MOD_DATA()) { + ps_close_files(mod_data TSRMLS_CC); + } PS_SET_MOD_DATA(data); return SUCCESS; diff --git a/ext/session/tests/sessionhandler_open_001.phpt b/ext/session/tests/sessionhandler_open_001.phpt new file mode 100644 index 0000000000..6ade9e00a5 --- /dev/null +++ b/ext/session/tests/sessionhandler_open_001.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing repated SessionHandler::open() calls +--SKIPIF-- + +--FILE-- +open('',''); +$x->open('',''); +$x->open('',''); +$x->open('',''); + +print "Done!\n"; + +?> +--EXPECTF-- +Done! -- 2.40.0