Suppose I have a function that allocates memory for the caller:
int func(void **mem1, void **mem2) { *mem1 = malloc(SIZE); if (!*mem1) return 1;
This is a readable alternative:
int func(void **mem1, void **mem2) { *mem1 = malloc(SIZE); *mem2 = malloc(SIZE); if (!*mem1 || !*mem2) { free(*mem2); free(*mem1); return 1; } return 0; }