diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 2b7b1bf128..00c250acb4 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -1237,6 +1237,10 @@ def CompileCxx(obj,src,opts): else: cmd += " -fno-exceptions" + if src.endswith(".mm"): + # Work around Apple compiler bug. + cmd += " -U__EXCEPTIONS" + if 'RTTI' not in opts: # We always disable RTTI on Android for memory usage reasons. if optlevel >= 4 or GetTarget() == "android": diff --git a/panda/src/glstuff/glGraphicsBuffer_src.cxx b/panda/src/glstuff/glGraphicsBuffer_src.cxx index 2d851775a5..dd9b1e1348 100644 --- a/panda/src/glstuff/glGraphicsBuffer_src.cxx +++ b/panda/src/glstuff/glGraphicsBuffer_src.cxx @@ -1626,6 +1626,15 @@ report_my_errors(int line, const char *file) { void CLP(GraphicsBuffer):: check_host_valid() { if ((_host == 0)||(!_host->is_valid())) { + _rb_data_size_bytes = 0; + if (_rb_context != NULL) { + // We must delete this object first, because when the GSG + // destructs, so will the tracker that this context is + // attached to. + _rb_context->update_data_size_bytes(0); + delete _rb_context; + _rb_context = NULL; + } _is_valid = false; _gsg.clear(); _host.clear();