* Undo the application of a patch. */
| 159 | * Undo the application of a patch. |
| 160 | */ |
| 161 | static void undo(Binary &B, Patch *P) |
| 162 | { |
| 163 | while (P != nullptr) |
| 164 | { |
| 165 | P->I->is_patched = P->original.is_patched; |
| 166 | P->I->is_evicted = false; |
| 167 | for (unsigned i = 0; i < PATCH_MAX; i++) |
| 168 | { |
| 169 | P->I->STATE[i] = P->original.state[i]; |
| 170 | P->I->PATCH[i] = P->original.bytes[i]; |
| 171 | } |
| 172 | deallocate(&B, P->A); |
| 173 | Patch *Q = P; |
| 174 | P = P->next; |
| 175 | delete Q; |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | /* |
| 180 | * Calculate trampoline bounds. |
no test coverage detected