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.
13 char* list2byteArray()
15 size_t data_size
= 24;
16 char *data
= new char[data_size
];
17 for (size_t i
= 0; i
< data_size
; i
++)
19 data
[data_size
- 1] = 0;
20 char *ret
= strdup(data
);
27 char *data
= list2byteArray();
33 void *fillTable(void *ptr
)
35 for (int i
= 0; i
< 100; i
++) {
36 std::string
id("000");
37 id
.append(1, 'a' + i
);
38 std::list
<std::string
> record
;
39 record
.push_back("some data");
46 int main(int argc
, char* argv
[])
50 for (int i
= 0; i
< sizeof(thread
)/sizeof(thread
[0]); i
++) {
51 int ret
= pthread_create(&thread
[i
], NULL
, &fillTable
, NULL
);
53 fprintf(stderr
, "Failed to create thread %d: %d\n", i
, ret
);
58 for (int i
= 0; i
< sizeof(thread
)/sizeof(thread
[0]); i
++) {
59 int ret
= pthread_join(thread
[i
], NULL
);
61 fprintf(stderr
, "Failed to join thread %d: %d\n", i
, ret
);