badPool.m   [plain text]


// TEST_CONFIG MEM=mrc
// TEST_CRASHES

// Test badPoolCompat also uses this file.

/*
TEST_RUN_OUTPUT
objc\[\d+\]: [Ii]nvalid or prematurely-freed autorelease pool 0x[0-9a-fA-F]+\.?
objc\[\d+\]: HALTED
END
*/

#include "test.h"

int main()
{
    void *outer = objc_autoreleasePoolPush();
    void *inner = objc_autoreleasePoolPush();
    objc_autoreleasePoolPop(outer);
    objc_autoreleasePoolPop(inner);

#if !OLD
    fail("should have crashed already with new SDK");
#else
    // should only warn once
    outer = objc_autoreleasePoolPush();
    inner = objc_autoreleasePoolPush();
    objc_autoreleasePoolPop(outer);
    objc_autoreleasePoolPop(inner);

    succeed(__FILE__);
#endif
}