I found this interesting thing. The "array" content is destroyed after the
"catch" statement but it shouldn't be. It behaves the same in MinGW 4.2.0 and
3.4.4 for me. It seems like the "array" is unwound out when the exception is
caught.

---
#include <cstdlib>
#include <cstdio>
#include <stdexcept>

int main () {
    int n = 10;
    int array [n];

    for (int i = 0; i < n; ++i) array [i] = i;

    try {
        for (int i = 0; i < n; ++i) std::printf ("%u,", array [i]);
        std::printf (" = %u\n", n);

        throw 1;

    } catch (int) {
        for (int i = 0; i < n; ++i) std::printf ("%u,", array [i]);
        std::printf (" = %u\n", n);
    };
    return 0;
};


-- 
           Summary: Variable-length automatic array contents gets destroyed
                    on unrelated exception
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: Tringi at Mx-3 dot cz


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30196

Reply via email to