diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod index 85ebfe300df42748fb31a5d94a26b68cc8962581..1330cc1f1d1a200ae4fb6cec0eed6232191b63c7 100644 --- a/lib/modules/Thread.pmod +++ b/lib/modules/Thread.pmod @@ -132,7 +132,11 @@ optional class Fifo { ptr%=sizeof(buffer); num--; }else{ - ret=buffer[ptr..]+buffer[..num-sizeof(ret)-1]; + if (ptr+num < sizeof(buffer)) { + ret = buffer[ptr..ptr+num-1]; + } else { + ret = buffer[ptr..]+buffer[..num-(sizeof(buffer)-ptr)-1]; + } ptr=num=0; buffer=allocate(sizeof(buffer)); // Throw away any references. }