#include <stdio.h>
#include <Block.h>
#include <Block_private.h>
#include <stdlib.h>
#include "test.h"
int cumulation = 0;
int doSomething(int i) {
cumulation += i;
return cumulation;
}
void dirtyStack() {
int i = (int)random();
int j = doSomething(i);
int k = doSomething(j);
doSomething(i + j + k);
}
typedef void (^voidVoid)(void);
voidVoid testFunction() {
int i = (int)random();
__block voidVoid inner = ^{ doSomething(i); };
voidVoid outer = ^{
inner();
};
voidVoid result = Block_copy(outer);
return result;
}
int main() {
voidVoid block = testFunction();
dirtyStack();
block();
Block_release(block);
succeed(__FILE__);
}