]> Nishi Git Mirror - gwion.git/commitdiff
:art: Fix #258
authorfennecdjay <fennecdjay@gmail.com>
Mon, 27 Feb 2023 08:54:37 +0000 (09:54 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Mon, 27 Feb 2023 08:54:37 +0000 (09:54 +0100)
src/lib/string.c
tests/plug/compile_file.c

index b61f5b11a190d45ec2b3a07daa4d0a2763f075fc..86b0489ed7069fb38cc9b3760c75dd2814013400 100644 (file)
@@ -381,8 +381,13 @@ static SFUN(string_load) {
   fseek(f, 0, SEEK_END);
   const size_t sz = ftell(f);
   char c[sz + 1];
+  c[sz] = '\0';
   rewind(f);
-  (void)fread(c, 1, sz, f);
+  const size_t ret = fread(c, 1, sz, f);
+  if(ret != sz) {
+    xfun_handle(shred, "StringLoadException");
+    return;
+  }
   fclose(f);
   *(M_Object*)RETURN = new_string(shred->info->vm->gwion, c);
 }
index 5a23095949da6c9334e16d4f321bdc9fb7dcb80d..e3d21c8b988d46747125fdb887a5c4f083108617 100644 (file)
 #include <string.h>
 GWION_IMPORT(compile_file) {
   DECL_OB(FILE *, file, = fopen("rm_me.gw", "w+"));
-  fprintf(file, "1;");
-  rewind(file);
-  const m_bool ret =
+  if(fprintf(file, "1;") >= 0) {
+    rewind(file);
+    const m_bool ret =
       compile_file(gwi->gwion, __FILE__, file) ? GW_OK : GW_ERROR;
-  fclose(file);
-  return ret;
+    fclose(file);
+    return ret;
+  }
+  return GW_ERROR;
 }