Skip to content

Commit a727b6b

Browse files
committed
Use some disposable heap arrays instead of stack.
Using a 512K buffer in this test may mean that the test process may hit the stack size rlimit quickly and segfault. Instead of trying to reduce the buffer sizes and then subsequently try and unwind other weird behavior in this test, just use heap-allocated buffers. We don't actually seem to care about the contents in this test, so we can just throw them away immediately after we read into them.
1 parent b5d3b4f commit a727b6b

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

Diff for: tests/dispatch_select.c

+8-5
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ stage1(int stage)
6767

6868
dispatch_source_set_event_handler(source, ^{
6969
size_t buffer_size = 500*1024;
70-
char buffer[500*1024];
70+
char *buffer = malloc(buffer_size*sizeof(char));
7171
ssize_t sz = dispatch_test_fd_read(fd, buffer, buffer_size);
72+
free(buffer);
7273
test_sizet_less_than_or_equal("kevent read 1", sz, buffer_size+1);
7374
dispatch_source_cancel(source);
7475
});
@@ -129,12 +130,14 @@ stage2(void)
129130
dispatch_source_set_event_handler(source, ^{
130131
size_t est = dispatch_source_get_data(source);
131132
test_sizet_less_than_or_equal("estimated", est, expected - actual);
132-
char buffer[500*1024];
133-
ssize_t sz = dispatch_test_fd_read(fd, buffer, sizeof(buffer));
133+
size_t buffer_size = 500*1024*sizeof(char);
134+
char *buffer = malloc(buffer_size);
135+
ssize_t sz = dispatch_test_fd_read(fd, buffer, buffer_size);
136+
free(buffer);
134137
actual += sz;
135-
if (sz < (ssize_t)sizeof(buffer))
138+
if (sz < (ssize_t)(buffer_size))
136139
{
137-
sz = dispatch_test_fd_read(fd, buffer, sizeof(buffer));
140+
sz = dispatch_test_fd_read(fd, buffer, buffer_size);
138141
actual += sz;
139142
test_long("EOF", sz, 0);
140143
dispatch_source_cancel(source);

0 commit comments

Comments
 (0)