diff --git a/c/glm.c b/c/glm.c index bbebd81..c3650bc 100644 --- a/c/glm.c +++ b/c/glm.c @@ -912,7 +912,8 @@ static jval* cfg_root(const char *snap, char **arena){ char p[2048]; snprintf(p,sizeof(p),"%s/config.json",snap); FILE *f=fopen(p,"rb"); if(!f){perror(p);exit(1);} fseek(f,0,SEEK_END); long n=ftell(f); fseek(f,0,SEEK_SET); - char *b=malloc(n+1); if(fread(b,1,n,f)!=(size_t)n){} b[n]=0; fclose(f); + char *b=malloc(n+1); size_t got=fread(b,1,n,f); b[got]=0; fclose(f); + if((long)got!=n) fprintf(stderr,"warning: short read on %s (%ld of %ld)\n",p,(long)got,n); return json_parse(b,arena); } static int gi(jval*r,const char*k){ jval*v=json_get(r,k); return v?(int)v->num:0; } @@ -3849,7 +3850,8 @@ int main(int argc, char **argv){ const char *refpath=getenv("REF")?getenv("REF"):"ref_glm.json"; FILE *f=fopen(refpath,"rb"); if(!f){perror(refpath);return 1;} fseek(f,0,SEEK_END); long n=ftell(f); fseek(f,0,SEEK_SET); - char *b=malloc(n+1); if(fread(b,1,n,f)!=(size_t)n){} b[n]=0; fclose(f); + char *b=malloc(n+1); size_t got=fread(b,1,n,f); b[got]=0; fclose(f); + if((long)got!=n) fprintf(stderr,"warning: short read on %s (%ld of %ld)\n",refpath,(long)got,n); char *ar=NULL; jval *ref=json_parse(b,&ar); int np,nfull; int *prompt=read_arr(ref,"prompt_ids",&np); int *full=read_arr(ref,"full_ids",&nfull); int n_new=nfull-np;