internal_post @brief Post an error, copying any potentially transient data before we punt. @param tmp_status @param **/
| 186 | |
| 187 | **/ |
| 188 | static void internal_post(const Arg::StatusVector& v) |
| 189 | { |
| 190 | // start building resulting vector |
| 191 | Jrd::FbStatusVector* status_vector = JRD_get_thread_data()->tdbb_status_vector; |
| 192 | Arg::StatusVector final(status_vector->getErrors()); |
| 193 | if (final.length() == 0) |
| 194 | { |
| 195 | // this is a blank status vector |
| 196 | final << Arg::Gds(isc_dsql_error); |
| 197 | } |
| 198 | |
| 199 | // check for duplicated error code |
| 200 | if (fb_utils::subStatus(final.value(), final.length(), v.value(), v.length()) == ~0u) |
| 201 | { |
| 202 | // no dup - append new vector to old one |
| 203 | final << v; |
| 204 | } |
| 205 | |
| 206 | // save & punt |
| 207 | status_vector->setErrors2(final.length(), final.value()); |
| 208 | ERRD_punt(); |
| 209 | } |
| 210 | |
| 211 | |
| 212 | /** |
no test coverage detected