on master help sign in
Checked error conditions and freed buffer after use
b531d09Ahmad Salim Al-Sibahi
rts/idris_rts.c+4−1
@@ -503,12 +503,15 @@ VAL idris_strlen(VM* vm, VAL l) {
503VAL idris_readStr(VM* vm, FILE* h) {
503VAL idris_readStr(VM* vm, FILE* h) {
504 char *buffer = NULL;
504 char *buffer = NULL;
505 size_t n = 0;
505 size_t n = 0;
506+ ssize_t len;
507+ len = getline(&buffer, &n, h);
506
508
507− if (getline(&buffer, &n, h) == 0) {
509+ if (len <= 0) {
508 return MKSTR(vm, "");
510 return MKSTR(vm, "");
509 } else {
511 } else {
510 return MKSTR(vm, buffer);
512 return MKSTR(vm, buffer);
511 }
513 }
514+ free(buffer);
512}
515}
513
516
514VAL idris_strHead(VM* vm, VAL str) {
517VAL idris_strHead(VM* vm, VAL str) {