diff options
| author | david <[email protected]> | 2026-07-23 22:12:42 -0300 |
|---|---|---|
| committer | david <[email protected]> | 2026-07-23 22:12:42 -0300 |
| commit | 17881c653f333baa15f9e7b735466a0333a6cee6 (patch) | |
| tree | 851c25695ca2433714383ecf697e2049e2a6c65e /games | |
| parent | 9765de97f1df3bed997eb341172ba4575f5376f3 (diff) | |
| download | petratc-17881c653f333baa15f9e7b735466a0333a6cee6.tar.gz petratc-17881c653f333baa15f9e7b735466a0333a6cee6.zip | |
fixed a couple bugs
Diffstat (limited to 'games')
| -rw-r--r-- | games/gameclicker.c | 12 | ||||
| -rw-r--r-- | games/gameguess.c | 2 | ||||
| -rw-r--r-- | games/gamemaze.c | 41 |
3 files changed, 46 insertions, 9 deletions
diff --git a/games/gameclicker.c b/games/gameclicker.c index 4dff0b6..2ac2ca3 100644 --- a/games/gameclicker.c +++ b/games/gameclicker.c @@ -173,7 +173,7 @@ static bignum divmixregbig(bignum a, double regnum){ static char *bignumprint(bignum b) { //32 bytes is more than enough for 124.24 trillion idk - char *nice = malloc(32 * sizeof(char)); + char *nice = malloc(32 * sizeof(char)); if(nice == NULL) return NULL; if(b.y >= 0 && b.y < 12) { @@ -181,7 +181,7 @@ static char *bignumprint(bignum b) { } else{ snprintf(nice, 32, "%.2lfe3*%d", b.x, b.y); } - return nice; + return nice; } @@ -239,8 +239,12 @@ static void drawwin(WINDOW *win, bignum cheeses){ char *scorestr = bignumprint(cheeses); char scoremsg[64]; - snprintf(scoremsg, sizeof(scoremsg), "cheese: %s", scorestr); - free(scorestr); + if(scorestr != NULL) { + snprintf(scoremsg, sizeof(scoremsg), "cheese: %s", scorestr); + free(scorestr); + } else { + snprintf(scoremsg, sizeof(scoremsg), "cheese: ERROR"); + } if(mode == layoutwide){ mvwprintw(win, 1, scorecol, "%s", scoremsg); diff --git a/games/gameguess.c b/games/gameguess.c index fc29839..47a0be9 100644 --- a/games/gameguess.c +++ b/games/gameguess.c @@ -2,6 +2,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <time.h> #include <ncurses.h> #include "../rat.h" @@ -42,6 +43,7 @@ void gameguess(){ int solved = 0; int range = 100; + srand(time(NULL)); int correct = (rand() % (range + 1)); int history[maxhistory]; diff --git a/games/gamemaze.c b/games/gamemaze.c index 1468475..3ce8737 100644 --- a/games/gamemaze.c +++ b/games/gamemaze.c @@ -64,7 +64,15 @@ void lerw() { char *vis = calloc(total, 1); //visited int *px = malloc(total * sizeof(int)); //path x int *py = malloc(total * sizeof(int)); //path y - int *ip = malloc(total * sizeof(int)); // index of path + int *ip = malloc(total * sizeof(int)); // index of path + + if(vis == NULL || px == NULL || py == NULL || ip == NULL) { + free(vis); + free(px); + free(py); + free(ip); + return; + } vis[0] = 1; grid[1][1] = grid[1][2] = grid[2][1] = grid[2][2] = ' '; //these should be open always int vc = 1; @@ -203,8 +211,20 @@ static void properrestart(cursor *curs, int *W, int *H) { *H = height; grid = malloc(*H * sizeof(char *)); - for (int y = 0; y < *H; y++) + if(grid == NULL) { + running = 0; + return; + } + for (int y = 0; y < *H; y++) { grid[y] = malloc(*W * sizeof(char)); + if(grid[y] == NULL) { + // Free already allocated rows + for(int i = 0; i < y; i++) free(grid[i]); + free(grid); + running = 0; + return; + } + } lerw(); spawncheeses(); @@ -225,9 +245,20 @@ void gamemaze(){ int W = width; int H = height; - grid = malloc(H * sizeof(char *)); //those who allocate memory - for (int y = 0; y < H; y++) - grid[y] = malloc(W * sizeof(char)); + grid = malloc(H * sizeof(char *)); //those who allocate memory + if(grid == NULL) { + stop(); + return; + } + for (int y = 0; y < H; y++) { + grid[y] = malloc(W * sizeof(char)); + if(grid[y] == NULL) { + for(int i = 0; i < y; i++) free(grid[i]); + free(grid); + stop(); + return; + } + } lerw(); spawncheeses(); |
