#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
typedef uint8_t u8;
typedef uint64_t u64;
// I don't know if this supports 64 bit printf so I did it myself
u64 ipow
(u64 base
, u64
exp){ // stolen from stackoverflow u64 result = 1;
while(exp>0){
if(exp & 1) result
= (result
* base
); base = (base * base);
}
return result;}
void print64(u64* number){
const u8 charlut[] = "0123456789ABCDEF";
u8 i=19U;
while(1){
putchar(charlut
[(*number
/ ipow
(10,i
)) % 10]); if(!i) break;
i--;
}}
//end horrible code
int main(void){
u64 size = 1;
u8* memoryblock = (u8*)0;
while( realloc(memoryblock
, size
) ){ printf("Allocated "); print64
(&size
); printf(" bytes...\n"); size = (size << 1);
}
printf("Allocate "); print64
(&size
); printf(" bytes failed\n"); return 0;}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiB1aW50OF90ICB1ODsKdHlwZWRlZiB1aW50NjRfdCB1NjQ7CgovLyBJIGRvbid0IGtub3cgaWYgdGhpcyBzdXBwb3J0cyA2NCBiaXQgcHJpbnRmIHNvIEkgZGlkIGl0IG15c2VsZgp1NjQgaXBvdyh1NjQgYmFzZSwgdTY0IGV4cCl7IC8vIHN0b2xlbiBmcm9tIHN0YWNrb3ZlcmZsb3cKCXU2NCByZXN1bHQgPSAxOwoJd2hpbGUoZXhwPjApewoJCWlmKGV4cCAmIDEpIHJlc3VsdCA9IChyZXN1bHQgKiBiYXNlKTsKCQlleHAgPSAoZXhwID4+IDEpOwoJCWJhc2UgPSAoYmFzZSAqIGJhc2UpOwoJfQoJcmV0dXJuIHJlc3VsdDt9Cgp2b2lkIHByaW50NjQodTY0KiBudW1iZXIpewoJY29uc3QgdTggY2hhcmx1dFtdICA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKCXU4IGk9MTlVOwoJd2hpbGUoMSl7CgkJcHV0Y2hhcihjaGFybHV0WygqbnVtYmVyIC8gaXBvdygxMCxpKSkgJSAxMF0pOwoJCWlmKCFpKSBicmVhazsKCQlpLS07Cgl9fQovL2VuZCBob3JyaWJsZSBjb2RlCgppbnQgbWFpbih2b2lkKXsKCXU2NCBzaXplID0gMTsKCXU4KiBtZW1vcnlibG9jayA9ICh1OCopMDsKCXdoaWxlKCByZWFsbG9jKG1lbW9yeWJsb2NrLCBzaXplKSApewoJCXByaW50ZigiQWxsb2NhdGVkICIpOyBwcmludDY0KCZzaXplKTsgcHJpbnRmKCIgYnl0ZXMuLi5cbiIpOwoJCXNpemUgPSAoc2l6ZSA8PCAxKTsKCX0KCXByaW50ZigiQWxsb2NhdGUgICIpOyBwcmludDY0KCZzaXplKTsgcHJpbnRmKCIgYnl0ZXMgZmFpbGVkXG4iKTsKCWZyZWUobWVtb3J5YmxvY2spOwoJcmV0dXJuIDA7fQ==