aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2023-12-08 18:25:01 +0200
committerSyndamia <kamen@syndamia.com>2023-12-08 18:25:01 +0200
commit52355a5cd5e451c2bf4f969c039e529eb6245a8e (patch)
tree11044841940c0b9b320bfc61b7e80c84c06095dd
parent60a717a163c4819d61e6bd1edd77e10c1b400e44 (diff)
downloadpico-web-52355a5cd5e451c2bf4f969c039e529eb6245a8e.tar
pico-web-52355a5cd5e451c2bf4f969c039e529eb6245a8e.tar.gz
pico-web-52355a5cd5e451c2bf4f969c039e529eb6245a8e.zip
[browser] Fixed memory leaks and did slight reorganizing
-rw-r--r--browser.c22
-rw-r--r--util.c7
2 files changed, 19 insertions, 10 deletions
diff --git a/browser.c b/browser.c
index f5a10cc..22d4b90 100644
--- a/browser.c
+++ b/browser.c
@@ -122,25 +122,31 @@ int main(int argc, char* argv[]) {
*/
page = get_page("127.0.0.1", "8080", address);
-
- free(anchorIndecies);
- anchorCount = 0;
renderPage(page, &md, &anchorIndecies, &anchorCount);
/*
* Handle user input
*/
+
scanf("%d", &gotoIndex);
- sdsfree(address);
- char* newplace = strchr(page + anchorIndecies[gotoIndex], '(') + 1;
- address = sdscatlen(sdsnew(argv[1]), newplace, strchr(newplace, ')') - newplace);
+ if (gotoIndex < anchorCount) {
+ char* newplace = strchr(page + anchorIndecies[gotoIndex], '(') + 1;
+ sdsfree(address);
+ address = sdscatlen(sdsnew(argv[1]), newplace, strchr(newplace, ')') - newplace);
+
+ free(anchorIndecies);
+ anchorCount = 0;
+ }
+ else {
+ printf("error\n");
+ }
+ sdsfree(page);
count++;
}
regfree(&md.anchor);
- sdsfree(page);
- sdsfree(address);
free(anchorIndecies);
+ sdsfree(address);
}
diff --git a/util.c b/util.c
index 8d1fa60..0d8f7c6 100644
--- a/util.c
+++ b/util.c
@@ -104,8 +104,11 @@ sds gsub_getm(sds str, const regex_t *regex, const char* repl, int* *matches, in
* repl can include matched subexpressions */
for(size_t i = 0; i < replLen; i++) {
if (repl[i] <= '\10') {
- if (pmatch[repl[i] % 10].rm_so > -1)
- ret = sdscatsds(ret, getMatch(MATCHSTART, pmatch[repl[i] % 10]));
+ if (pmatch[repl[i] % 10].rm_so > -1) {
+ sds match = getMatch(MATCHSTART, pmatch[repl[i] % 10]);
+ ret = sdscatsds(ret, match);
+ sdsfree(match);
+ }
}
else
ret = sdscatlen(ret, &repl[i], 1);