]> www.wagner.pp.ru Git - oss/catdoc.git/blobdiff - src/ole.c
Applied most patches from Debian package. Rewrote configure to work with modern autoc...
[oss/catdoc.git] / src / ole.c
index d1c731ddf8a309127428d168096e1ec38c1fba7f..68fade81abedf004c6da3715670cabca1f1bab13 100644 (file)
--- a/src/ole.c
+++ b/src/ole.c
@@ -332,6 +332,23 @@ FILE *ole_readdir(FILE *f) {
                        return NULL;
                }
                while(1) {
+                       if(chainCurrent < 0 ||
+                          chainCurrent >= (
+                               e->isBigBlock ?
+                               ((bbdNumBlocks*sectorSize)/4) :
+                               ((sbdNumber*shortSectorSize)/4)
+                               ) ||
+                          (e->numOfBlocks >
+                               e->length/(
+                                    e->isBigBlock ?
+                                    sectorSize :
+                                    shortSectorSize
+                                    )
+                                )
+                           ) {
+/*                             fprintf(stderr, "chain End=%ld\n", chainCurrent);   */
+                               break;
+                       }
 /*                     fprintf(stderr, "chainCurrent=%ld\n", chainCurrent); */
                        e->blocks[e->numOfBlocks++] = chainCurrent;
                        if (e->numOfBlocks >= chainMaxLen) {
@@ -354,15 +371,6 @@ FILE *ole_readdir(FILE *f) {
                        } else {
                                chainCurrent=-1;
                        }
-                       if(chainCurrent <= 0 ||
-                          chainCurrent >= ( e->isBigBlock ?
-                                                                ((bbdNumBlocks*sectorSize)/4)
-                                                                : ((sbdNumber*shortSectorSize)/4) ) ||
-                          (e->numOfBlocks >
-                               e->length/(e->isBigBlock ? sectorSize : shortSectorSize))) {
-/*                             fprintf(stderr, "chain End=%ld\n", chainCurrent);   */
-                               break;
-                       }
                }
        }