@@ -503,12 +503,15 @@ VAL idris_strlen(VM* vm, VAL l) {
503503VAL idris_readStr(VM* vm, FILE* h) {
504504 char *buffer = NULL;
505505 size_t n = 0;
506+ ssize_t len;
507+ len = getline(&buffer, &n, h);
506508
507− if (getline(&buffer, &n, h) == 0) {
509+ if (len <= 0) {
508510 return MKSTR(vm, "");
509511 } else {
510512 return MKSTR(vm, buffer);
511513 }
514+ free(buffer);
512515}
513516
514517VAL idris_strHead(VM* vm, VAL str) {