From c999fa4c210bba03f83813aeb6a397995ff84b51 Mon Sep 17 00:00:00 2001 From: joebo Date: Thu, 7 Apr 2016 08:34:03 -0400 Subject: [PATCH 1/3] reduce allocation in pickapart (increase realloc time potentially) --- xxl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xxl.c b/xxl.c index 4c73364..d48efcc 100644 --- a/xxl.c +++ b/xxl.c @@ -2909,7 +2909,7 @@ VP pickapart(VP x,VP y) { // select items of x[0..n] where y[n]=1, and divide no acc=xlsz(4); VARY_EACHBOTHLIST(x,y,({ if(_y) { - if (!sub) sub=ALLOC_LIKE_SZ(x,x->n/2); + if (!sub) sub=ALLOC_LIKE_SZ(x,1); sub=appendbuf(sub,(buf_t)&_x,1); } else { if (sub) { acc=append(acc,sub); xfree(sub); sub=NULL; } From 0784bcab39ba88cb9b81743302d4b172282143cd Mon Sep 17 00:00:00 2001 From: joebo Date: Thu, 7 Apr 2016 08:55:13 -0400 Subject: [PATCH 2/3] bug: repr_l wasn't limiting output of REPR_MAX_ITEMS needed break; --- xxl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xxl.c b/xxl.c index d48efcc..3cabfab 100644 --- a/xxl.c +++ b/xxl.c @@ -141,7 +141,7 @@ char* repr_l(VP x,char* s,size_t sz) { if(REPR_MAX_ITEMS && i==(REPR_MAX_ITEMS/2)) { FMT_into_s(sz,".. (%d omitted) ..", n-REPR_MAX_ITEMS); i+=REPR_MAX_ITEMS; - continue; + break; } a = ELl(x,i); if (a==NULL) FMT_into_s(sz,"null",0); From 59b2edee3f96889c1a702a634dcab5a8a645acb8 Mon Sep 17 00:00:00 2001 From: joebo Date: Thu, 7 Apr 2016 10:13:48 -0400 Subject: [PATCH 3/3] add safety check repr_c for long strings --- xxl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xxl.c b/xxl.c index 3cabfab..ec12033 100644 --- a/xxl.c +++ b/xxl.c @@ -82,6 +82,10 @@ char* repr_c(VP x,char* s,size_t sz) { int i=0,n=x->n,ch; FMT_into_s(sz,"\"",0); for(;i