| 3433 | } |
| 3434 | |
| 3435 | int freeLayer(layerObj *layer) { |
| 3436 | int i; |
| 3437 | if (!layer) return MS_FAILURE; |
| 3438 | if( MS_REFCNT_DECR_IS_NOT_ZERO(layer) ) { return MS_FAILURE; } |
| 3439 | |
| 3440 | if (layer->debug >= MS_DEBUGLEVEL_VVV) |
| 3441 | msDebug("freeLayer(): freeing layer at %p.\n",layer); |
| 3442 | |
| 3443 | if(msLayerIsOpen(layer)) |
| 3444 | msLayerClose(layer); |
| 3445 | |
| 3446 | msFree(layer->name); |
| 3447 | msFree(layer->group); |
| 3448 | msFree(layer->data); |
| 3449 | msFree(layer->classitem); |
| 3450 | msFree(layer->labelitem); |
| 3451 | msFree(layer->header); |
| 3452 | msFree(layer->footer); |
| 3453 | msFree(layer->template); |
| 3454 | msFree(layer->tileindex); |
| 3455 | msFree(layer->tileitem); |
| 3456 | msFree(layer->bandsitem); |
| 3457 | msFree(layer->plugin_library); |
| 3458 | msFree(layer->plugin_library_original); |
| 3459 | msFree(layer->connection); |
| 3460 | msFree(layer->vtable); |
| 3461 | msFree(layer->classgroup); |
| 3462 | |
| 3463 | msFreeProjection(&(layer->projection)); |
| 3464 | |
| 3465 | freeCluster(&layer->cluster); |
| 3466 | |
| 3467 | for(i=0;i<layer->maxclasses;i++) { |
| 3468 | if (layer->class[i] != NULL) { |
| 3469 | layer->class[i]->layer=NULL; |
| 3470 | if ( freeClass(layer->class[i]) == MS_SUCCESS ) { |
| 3471 | msFree(layer->class[i]); |
| 3472 | } |
| 3473 | } |
| 3474 | } |
| 3475 | msFree(layer->class); |
| 3476 | |
| 3477 | if(layer->features) |
| 3478 | freeFeatureList(layer->features); |
| 3479 | |
| 3480 | if(layer->resultcache) { |
| 3481 | if(layer->resultcache->results) free(layer->resultcache->results); |
| 3482 | msFree(layer->resultcache); |
| 3483 | } |
| 3484 | |
| 3485 | msFree(layer->styleitem); |
| 3486 | |
| 3487 | msFree(layer->filteritem); |
| 3488 | freeExpression(&(layer->filter)); |
| 3489 | |
| 3490 | msFree(layer->requires); |
| 3491 | msFree(layer->labelrequires); |
| 3492 |
no test coverage detected