commit 846cec9ebc33dcbdd93d425a92fab6bc7acf355c from: Russ Cox date: Mon Dec 07 01:27:08 2009 UTC sam: fix off-by-one in buffer merge. exposed by UTFmax==4 R=rsc http://codereview.appspot.com/165071 commit - 1d919bc08079e8f6221b3e83150374fe876989c8 commit + 846cec9ebc33dcbdd93d425a92fab6bc7acf355c blob - c0771e058c6e10e319490c69d313147aa2b0a7c5 blob + 07d73bb9ab6e0712e25811d07dbabc89b329fd6f --- src/cmd/sam/file.c +++ src/cmd/sam/file.c @@ -139,7 +139,7 @@ loginsert(File *f, uint p0, Rune *s, uint ns) if(merge.f != f || p0-(merge.p0+merge.n)>Maxmerge /* too far */ - || merge.nbuf+((p0+ns)-(merge.p0+merge.n))>RBUFSIZE) /* too long */ + || merge.nbuf+((p0+ns)-(merge.p0+merge.n))>=RBUFSIZE) /* too long */ flushmerge(); if(ns>=RBUFSIZE){ @@ -178,7 +178,7 @@ logdelete(File *f, uint p0, uint p1) if(merge.f != f || p0-(merge.p0+merge.n)>Maxmerge /* too far */ - || merge.nbuf+(p0-(merge.p0+merge.n))>RBUFSIZE){ /* too long */ + || merge.nbuf+(p0-(merge.p0+merge.n))>=RBUFSIZE){ /* too long */ flushmerge(); merge.f = f; merge.p0 = p0;