@@ -1342,24 +1342,38 @@ const Reader = struct {
1342
1342
1343
1343
const size = self .size .? ;
1344
1344
const missing = self .missing ;
1345
+
1345
1346
if (data .len >= missing ) {
1346
- // we have a complete chunk ;
1347
- var chunk : ? [] u8 = data ;
1347
+ self . size = null ;
1348
+ self . missing = 0 ;
1348
1349
if (missing == 1 ) {
1349
- const last = missing - 1 ;
1350
- if (data [last ] != '\n ' ) {
1350
+ if (data [0 ] != '\n ' ) {
1351
1351
return error .InvalidChunk ;
1352
1352
}
1353
- chunk = null ;
1354
- } else {
1355
- const last = missing - 2 ;
1356
- if (data [last ] != '\r ' or data [missing - 1 ] != '\n ' ) {
1353
+ if (data .len == 1 ) {
1354
+ return .{ true , .{ .data = null , .done = size == 0 , .unprocessed = null } };
1355
+ }
1356
+ return self .process (data [1.. ]);
1357
+ }
1358
+
1359
+ if (missing == 2 ) {
1360
+ if (data [0 ] != '\r ' or data [1 ] != '\n ' ) {
1357
1361
return error .InvalidChunk ;
1358
1362
}
1359
- chunk = if (last == 0 ) null else data [0.. last ];
1363
+
1364
+ if (data .len == 2 ) {
1365
+ return .{ true , .{ .data = null , .done = size == 0 , .unprocessed = null } };
1366
+ }
1367
+ return self .process (data [2.. ]);
1360
1368
}
1361
- self .size = null ;
1362
- self .missing = 0 ;
1369
+
1370
+ // we have a complete chunk;
1371
+ var chunk : ? []u8 = data ;
1372
+ const last = missing - 2 ;
1373
+ if (data [last ] != '\r ' or data [missing - 1 ] != '\n ' ) {
1374
+ return error .InvalidChunk ;
1375
+ }
1376
+ chunk = if (last == 0 ) null else data [0.. last ];
1363
1377
1364
1378
const unprocessed = data [missing .. ];
1365
1379
0 commit comments