@@ -1235,19 +1235,22 @@ private COSObjectKey findObjectKey(COSObjectKey objectKey, long offset) throws I
12351235        {
12361236            source .seek (offset );
12371237            // try to read the given object/generation number 
1238-             if  (objectKey .getNumber () == readObjectNumber ())
1238+             long  foundObjectNumber  = readObjectNumber ();
1239+             if (objectKey .getNumber () != foundObjectNumber ){
1240+                 LOG .warn ("found wrong object number. expected ["  + objectKey .getNumber () +"] found [" + foundObjectNumber  + "]" );
1241+                 if (!isLenient ) return  null ;
1242+             }
1243+ 
1244+             int  genNumber  = readGenerationNumber ();
1245+             // finally try to read the object marker 
1246+             readExpectedString (OBJ_MARKER , true );
1247+             if  (genNumber  == objectKey .getGeneration ())
12391248            {
1240-                 int  genNumber  = readGenerationNumber ();
1241-                 // finally try to read the object marker 
1242-                 readExpectedString (OBJ_MARKER , true );
1243-                 if  (genNumber  == objectKey .getGeneration ())
1244-                 {
1245-                     return  objectKey ;
1246-                 }
1247-                 else  if  (isLenient  && genNumber  > objectKey .getGeneration ())
1248-                 {
1249-                     return  new  COSObjectKey (objectKey .getNumber (), genNumber );
1250-                 }
1249+                 return  objectKey ;
1250+             }
1251+             else  if  (isLenient  && genNumber  > objectKey .getGeneration ())
1252+             {
1253+                 return  new  COSObjectKey (objectKey .getNumber (), genNumber );
12511254            }
12521255        }
12531256        catch  (IOException  exception )
@@ -1322,7 +1325,7 @@ private Map<COSObjectKey, Long> bfSearchForObjects() throws IOException
13221325                                // add the former object ID only if there was a subsequent object ID 
13231326                                bfCOSObjectKeyOffsets .put (
13241327                                        new  COSObjectKey (lastObjectId , lastGenID ), lastObjOffset );
1325-                             }
1328+                                  }
13261329                            lastObjectId  = objectId ;
13271330                            lastGenID  = genID ;
13281331                            lastObjOffset  = tempOffset  + 1 ;
0 commit comments