Commit ad58ca3f authored by Hiroshi Sumita's avatar Hiroshi Sumita
Browse files

Fixes a bug caused by a reallocation on vector.

BUG=Database::query crashes on some situation
TEST=Manual

Review URL: https://codereview.appspot.com/6295043
parent 1b0f6aab
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ public:

    void double_ (void) {
        size_t i = size ();
        // To avoid a invalid referece caused by a memory reallocation, which
        // may occur on push_back, we call reserve here.
        reserve (i * 2);
        do {
            push_back (at (--i));
        } while (i > 0);
@@ -58,8 +61,11 @@ public:

    void triple (void) {
        size_t i = size ();
        // To avoid a invalid referece caused by a memory reallocation, which
        // may occur on push_back, we call reserve here.
        reserve (i * 3);
        do {
            const std::string & value = std::vector<std::string>::at (--i);
            const std::string & value = at (--i);
            push_back (value);
            push_back (value);
        } while (i > 0);