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
CVS, please?


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 )

Reply via email to