fixed a couple bugs

This commit is contained in:
david committed 2026-07-23 22:12:42 -03:00
1 parent 9765de97f1
commit 17881c653f
6 files changed
+65 -15

No files matched your search

+1
View File
@@ -1 +1,2 @@
petratc
obj/
+8 -3
View File
@@ -3,10 +3,11 @@ CFLAGS = -Wall -Wextra -O2 -pipe
LDLIBS = -lncurses -ltinfo
TARGET = petratc
SRC = petratc.c rat.c $(wildcard games/*.c)
OBJ = $(SRC:%.c=obj/%.o)
PREFIX = /usr/local
$(TARGET): $(SRC)
$(CC) $(CFLAGS) -o $(TARGET) $(SRC) $(LDLIBS)
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LDLIBS)
install: $(TARGET)
install -D $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET)
@@ -14,5 +15,9 @@ install: $(TARGET)
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET)
obj/%.o: %.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(TARGET)
rm -f $(TARGET) $(OBJ)
+8 -4
View File
@@ -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);
+2
View File
@@ -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];
+36 -5
View File
@@ -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();
+10 -3
View File
@@ -99,9 +99,10 @@ WINDOW *ratdrawbox(void){
}
int wrapprint(WINDOW *win, int row, int col, int maxwidth, const char *msg){
if(msg == NULL) return row;
char copy[256];
strncpy(copy, msg, sizeof(copy));
strncpy(copy, msg, sizeof(copy) - 1);
copy[sizeof(copy)-1] = '\0';
char line[256] = "";
@@ -117,8 +118,14 @@ int wrapprint(WINDOW *win, int row, int col, int maxwidth, const char *msg){
extra = 0;
}
if(linelen > 0) strcat(line, " ");
strcat(line, word);
if(linelen > 0) {
if(strlen(line) + 1 < sizeof(line)) {
strcat(line, " ");
}
}
if(strlen(line) + strlen(word) < sizeof(line)) {
strcat(line, word);
}
word = strtok(NULL, " ");
}