hs_init is not idempotent
hs_init tries to be idempotent by ignoring all calls but the first one. However, subsequent calls to hs_init do not set argc and argv correctly.
Here's a test case:
#include "HsFFI.h"
#include "stdio.h"
void try_init() {
char *argv[] = { "./test", "+RTS", "-s", "-RTS", "arg", 0 };
char **argv_ptr = argv;
int argc = sizeof(argv)/sizeof(argv[0]) - 1;
hs_init(&argc, &argv_ptr);
printf("%d\n", argc);
}
int main() {
try_init();
try_init();
}
Result:
2
5
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |