* Free a TriggerDesc data structure. */
| 2016 | * Free a TriggerDesc data structure. |
| 2017 | */ |
| 2018 | void |
| 2019 | FreeTriggerDesc(TriggerDesc *trigdesc) |
| 2020 | { |
| 2021 | Trigger *trigger; |
| 2022 | int i; |
| 2023 | |
| 2024 | if (trigdesc == NULL) |
| 2025 | return; |
| 2026 | |
| 2027 | trigger = trigdesc->triggers; |
| 2028 | for (i = 0; i < trigdesc->numtriggers; i++) |
| 2029 | { |
| 2030 | pfree(trigger->tgname); |
| 2031 | if (trigger->tgnattr > 0) |
| 2032 | pfree(trigger->tgattr); |
| 2033 | if (trigger->tgnargs > 0) |
| 2034 | { |
| 2035 | while (--(trigger->tgnargs) >= 0) |
| 2036 | pfree(trigger->tgargs[trigger->tgnargs]); |
| 2037 | pfree(trigger->tgargs); |
| 2038 | } |
| 2039 | if (trigger->tgqual) |
| 2040 | pfree(trigger->tgqual); |
| 2041 | if (trigger->tgoldtable) |
| 2042 | pfree(trigger->tgoldtable); |
| 2043 | if (trigger->tgnewtable) |
| 2044 | pfree(trigger->tgnewtable); |
| 2045 | trigger++; |
| 2046 | } |
| 2047 | pfree(trigdesc->triggers); |
| 2048 | pfree(trigdesc); |
| 2049 | } |
| 2050 | |
| 2051 | /* |
| 2052 | * Compare two TriggerDesc structures for logical equality. |
no test coverage detected