File tree 2 files changed +34
-1
lines changed
2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -187,8 +187,10 @@ PHP_FUNCTION(readline_info)
187
187
RETURN_THROWS ();
188
188
}
189
189
#ifndef PHP_WIN32
190
- if (strlen (oldstr ) < Z_STRLEN_P (value )) {
190
+ if (! oldstr || strlen (oldstr ) < Z_STRLEN_P (value )) {
191
191
rl_extend_line_buffer (Z_STRLEN_P (value ) + 1 );
192
+ } else if (!rl_line_buffer ) {
193
+ rl_line_buffer = malloc (Z_STRLEN_P (value ) + 1 );
192
194
}
193
195
memcpy (rl_line_buffer , Z_STRVAL_P (value ), Z_STRLEN_P (value ) + 1 );
194
196
rl_end = Z_STRLEN_P (value );
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ readline_info(): using line_buffer before rl_line_buffer is initialised.
3
+ --EXTENSIONS--
4
+ readline
5
+ --SKIPIF--
6
+ <?php if (READLINE_LIB == "libedit " ) die ("skip readline only " );
7
+ if (getenv ('SKIP_REPEAT ' )) die ("skip readline has global state " );
8
+ ?>
9
+ --FILE--
10
+ <?php
11
+
12
+ $ name = tempnam ('/tmp ' , 'readline.tmp ' );
13
+
14
+ var_dump (readline_info ('line_buffer ' ));
15
+ readline_info ('line_buffer ' , 'abcdef ' );
16
+ var_dump (readline_info ('line_buffer ' ));
17
+ readline_add_history ('123 ' );
18
+ readline_write_history ($ name );
19
+ readline_info ('line_buffer ' , 'abcdefghijkl ' );
20
+ var_dump (readline_info ('line_buffer ' ));
21
+
22
+ var_dump (file_get_contents ($ name ));
23
+
24
+ unlink ($ name );
25
+ ?>
26
+ --EXPECTF--
27
+ string(0) ""
28
+ string(6) "abcdef"
29
+ string(12) "abcdefghijkl"
30
+ string(4) "123
31
+ "
You can’t perform that action at this time.
0 commit comments