2 * Test program that uses std::string object from more than one thread and
3 * that also triggers a call to __GI_strlen() (from inside strdup()). See also
4 * https://bugs.kde.org/show_bug.cgi?id=326091.
14 char* list2byteArray()
16 size_t data_size
= 24;
17 char *data
= new char[data_size
];
18 for (size_t i
= 0; i
< data_size
; i
++)
20 data
[data_size
- 1] = 0;
21 char *ret
= strdup(data
);
28 char *data
= list2byteArray();
34 void *fillTable(void *ptr
)
36 for (int i
= 0; i
< 100; i
++) {
37 std::string
id("000");
38 id
.append(1, 'a' + i
);
39 std::list
<std::string
> record
;
40 record
.push_back("some data");
47 int main(int argc
, char* argv
[])
51 for (int i
= 0; i
< sizeof(thread
)/sizeof(thread
[0]); i
++) {
52 int ret
= pthread_create(&thread
[i
], NULL
, &fillTable
, NULL
);
54 fprintf(stderr
, "Failed to create thread %d: %d\n", i
, ret
);
59 for (int i
= 0; i
< sizeof(thread
)/sizeof(thread
[0]); i
++) {
60 int ret
= pthread_join(thread
[i
], NULL
);
62 fprintf(stderr
, "Failed to join thread %d: %d\n", i
, ret
);