| 174 | } |
| 175 | |
| 176 | void StatusVector::ImplStatusVector::setStrPointers(const char* oldBase) |
| 177 | { |
| 178 | const char* const newBase = m_strings.c_str(); |
| 179 | if (newBase == oldBase) |
| 180 | return; |
| 181 | |
| 182 | const char* const newEnd = m_strings.end(); |
| 183 | |
| 184 | for (ISC_STATUS* arg = m_status_vector.begin(); *arg != isc_arg_end; arg += fb_utils::nextArg(*arg)) |
| 185 | { |
| 186 | if (!fb_utils::isStr(*arg)) |
| 187 | continue; |
| 188 | |
| 189 | const char** ptr = reinterpret_cast<const char**>(&arg[fb_utils::nextArg(*arg) - 1]); |
| 190 | if (*ptr >= newBase && *ptr < newEnd) |
| 191 | break; |
| 192 | |
| 193 | *ptr = &newBase[*ptr - oldBase]; |
| 194 | } |
| 195 | } |
| 196 | |
| 197 | void StatusVector::ImplStatusVector::append(const StatusVector& v) throw() |
| 198 | { |