| 535 | } |
| 536 | |
| 537 | treeNodeObj *readTreeNode( SHPTreeHandle disktree ) |
| 538 | { |
| 539 | int i,res; |
| 540 | ms_int32 offset; |
| 541 | treeNodeObj *node; |
| 542 | |
| 543 | node = (treeNodeObj *) msSmallMalloc(sizeof(treeNodeObj)); |
| 544 | node->ids = NULL; |
| 545 | |
| 546 | res = fread( &offset, 4, 1, disktree->fp ); |
| 547 | if ( !res ) |
| 548 | return NULL; |
| 549 | |
| 550 | if ( disktree->needswap ) SwapWord ( 4, &offset ); |
| 551 | |
| 552 | fread( &node->rect, sizeof(rectObj), 1, disktree->fp ); |
| 553 | if ( disktree->needswap ) SwapWord ( 8, &node->rect.minx ); |
| 554 | if ( disktree->needswap ) SwapWord ( 8, &node->rect.miny ); |
| 555 | if ( disktree->needswap ) SwapWord ( 8, &node->rect.maxx ); |
| 556 | if ( disktree->needswap ) SwapWord ( 8, &node->rect.maxy ); |
| 557 | |
| 558 | fread( &node->numshapes, 4, 1, disktree->fp ); |
| 559 | if ( disktree->needswap ) SwapWord ( 4, &node->numshapes ); |
| 560 | if( node->numshapes > 0 ) |
| 561 | node->ids = (ms_int32 *)msSmallMalloc(sizeof(ms_int32)*node->numshapes); |
| 562 | fread( node->ids, node->numshapes*4, 1, disktree->fp ); |
| 563 | for( i=0; i < node->numshapes; i++ ) |
| 564 | { |
| 565 | if ( disktree->needswap ) SwapWord ( 4, &node->ids[i] ); |
| 566 | } |
| 567 | |
| 568 | fread( &node->numsubnodes, 4, 1, disktree->fp ); |
| 569 | if ( disktree->needswap ) SwapWord ( 4, &node->numsubnodes ); |
| 570 | |
| 571 | return node; |
| 572 | } |
| 573 | |
| 574 | treeObj *msReadTree(char *filename, int debug) |
| 575 | { |
no test coverage detected