# Re: [Zope-dev] Bug in ZTUtil.Batch solved

Please submit the patch (+ unittest) to the bug collector. Otherwise it might get lost.

-aj

--On Montag, 22. März 2004 13:09 Uhr +0100 AP Meyer <[EMAIL PROTECTED]> wrote:

Hi Zopers

```It seems that there is a bug in ZTUtil.Batch: when the batch should be
the length of the batch and there are exactly as many orphans as there
would fit on one page the length of the batch becomes size instead of
size+orphans.

```

Here are the numbers:

```no of
batches    start    end    orphan    length    sequence_length
1          1        12     3         12        12
1          1        10     3         10        13      <<< WRONG *
2          1        10     3         10        14```

* end and length should be 13 in this case, 3 items are omitted

```        length=12       length=13       length=14
1               1               1
2               2               2
3               3               3
4               4               4
5               5               5
6               6               6
7               7               7
8               8               8
9               9               9
10              10              10
11                              11 | second batch
12                              12 |
13 |
14 |```

```So, there is a jump on the edge where there should be one batch of the
length sequence_length == length+orphans. At that point 3 (in the above
case) items disappear.
I have looked at the code in ZTUtils.Batch.py and found the following
solution (line 109):```

``` 94     def opt(start,end,size,orphan,sequence):
95         if size < 1:
96             if start > 0 and end > 0 and end >= start:
97                 size=end+1-start
98             else: size=7
99
100         if start > 0:
101
102             try: sequence[start-1]
103             except IndexError: start=len(sequence)
104
105             if end > 0:
106                 if end < start: end=start
107             else:
108                 end=start+size-1
109                 #try: sequence[end+orphan-1]
110                 try: sequence[end+orphan]        # replace above with this
111                 except IndexError: end=len(sequence)
112             ...```

```Can somebody confirm that this solution is correct and modify it in the

NB This has been run in Zope 2.7 with Python 2.3.3.

```thanks
Andre
```

```_______________________________________________
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )
```