void test_strtok_r() { if (nondet) { strtok_r(NULL, " ", NULL); // must fail //@ assert unreachable: \false; } char *saveptr; char buf[2] = {0}; char *a = strtok_r(buf, " ", &saveptr); if (nondet) { strtok_r(buf, " ", NULL); // must fail //@ assert unreachable: \false; } //@ assert a == \null || \subset(a, buf+(0..)); char *b = strtok_r(NULL, " ", &saveptr); Frama_C_show_each_saveptr(saveptr); //@ assert b == \null || \subset(b, buf+(0..)); char buf2[4] = "abc"; char *p = strtok_r(buf2, "b", &saveptr); //@ assert p == \null || \subset(p, buf2+(0..)); char *q = strtok_r(NULL, "c", &saveptr); //@ assert q == \null || \subset(p, buf2+(0..)); // test with non-writable string, but delimiter not found char *r = strtok_r((char*)"constant!", "NONE_TO_BE_FOUND", &saveptr); //@ assert r == \null; if (nondet) { strtok_r((char*)"constant!", "!", &saveptr); //@ assert unreachable_if_precise: \false; } }
void test_strtok_r() { if (nondet) { strtok_r(NULL, " ", NULL); // must fail //@ assert unreachable: \false; } char *saveptr; char buf[2] = {0}; char *a = strtok_r(buf, " ", &saveptr); if (nondet) { strtok_r(buf, " ", NULL); // must fail //@ assert unreachable: \false; } //@ assert a == \null || \subset(a, buf+(0..)); char *b = strtok_r(NULL, " ", &saveptr); Frama_C_show_each_saveptr(saveptr); //@ assert b == \null || \subset(b, buf+(0..)); char buf2[4] = "abc"; char *p = strtok_r(buf2, "b", &saveptr); //@ assert p == \null || \subset(p, buf2+(0..)); char *q = strtok_r(NULL, "c", &saveptr); //@ assert q == \null || \subset(p, buf2+(0..)); }