diff --git a/nasal_builtin.h b/nasal_builtin.h index 4d6fb3e..69243ca 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -91,14 +91,11 @@ nas_ref builtin_fin(nas_ref* local,nasal_gc& gc) nas_ref val=local[1]; if(val.type!=vm_str) return nas_err("io.fin","\"filename\" must be string"); - std::ifstream fin(val.str()); + std::ifstream fin(val.str(),std::ios::binary); + std::stringstream rd; if(!fin.fail()) - { - std::stringstream rd; rd<"); + return gc.newstr(rd.str()); } nas_ref builtin_fout(nas_ref* local,nasal_gc& gc) { diff --git a/stl/stack.nas b/stl/stack.nas index c4bef1e..3e6a14b 100644 --- a/stl/stack.nas +++ b/stl/stack.nas @@ -1,24 +1,23 @@ # stack.nas # valkmjolnir 2021/3/31 var stack=func(){ - var next=nil; + var vec=[]; return{ push:func(elem){ - next={elem:elem,next:next}; + append(vec,elem); }, pop:func(){ - if(next!=nil) - next=next.next; + return pop(vec); }, top:func(){ - if(next!=nil) - return next.elem; + if(size(vec)!=0) + return vec[-1]; }, clear:func(){ - next=nil; + vec=[]; }, empty:func(){ - return next==nil; + return size(vec)==0; } }; } diff --git a/test/calc.nas b/test/calc.nas index a4d221a..dd5c232 100644 --- a/test/calc.nas +++ b/test/calc.nas @@ -89,9 +89,9 @@ var getname=func(s){ } var count=func(s,c){ - var (cnt,len,ch)=(0,size(s),c[0]); - for(var i=0;i