Browse Source

Merge branch 'release/1.9.x'

rdb 9 years ago
parent
commit
733456cb41
3 changed files with 12 additions and 6 deletions
  1. 9 4
      .gitignore
  2. 1 0
      doc/ReleaseNotes
  3. 2 2
      dtool/src/interrogatedb/py_panda.cxx

+ 9 - 4
.gitignore

@@ -1,4 +1,9 @@
-/built_x64
-/built
-/thirdparty
-/targetroot
+/built*/
+/thirdparty/
+/targetroot/
+/dstroot/
+core
+core.*
+vgcore.*
+*.save
+*.save.1

+ 1 - 0
doc/ReleaseNotes

@@ -10,6 +10,7 @@ This issue fixes several bugs that were still found in 1.9.2.
 * Fix loading old models with MovingPart<LMatrix4f>
 * Fix loading old models with MovingPart<LMatrix4f>
 * Improve performance of CPU vertex animation somewhat
 * Improve performance of CPU vertex animation somewhat
 * Show framebuffer properties when fbprop request fails
 * Show framebuffer properties when fbprop request fails
+* Show error instead of crash on use of object before __init__
 * Fix hang on exit when using Python task on threaded task chain
 * Fix hang on exit when using Python task on threaded task chain
 * Fix inability to get RGBA renderbuffer in certain cases
 * Fix inability to get RGBA renderbuffer in certain cases
 * Work around GLSL issue with #pragma and certain Intel drivers
 * Work around GLSL issue with #pragma and certain Intel drivers

+ 2 - 2
dtool/src/interrogatedb/py_panda.cxx

@@ -67,7 +67,7 @@ void DTOOL_Call_ExtractThisPointerForType(PyObject *self, Dtool_PyTypedObject *c
  * was of the wrong type, raises an AttributeError.
  * was of the wrong type, raises an AttributeError.
  */
  */
 bool Dtool_Call_ExtractThisPointer(PyObject *self, Dtool_PyTypedObject &classdef, void **answer) {
 bool Dtool_Call_ExtractThisPointer(PyObject *self, Dtool_PyTypedObject &classdef, void **answer) {
-  if (self == NULL || !DtoolCanThisBeAPandaInstance(self)) {
+  if (self == NULL || !DtoolCanThisBeAPandaInstance(self) || ((Dtool_PyInstDef *)self)->_ptr_to_object == NULL) {
     Dtool_Raise_TypeError("C++ object is not yet constructed, or already destructed.");
     Dtool_Raise_TypeError("C++ object is not yet constructed, or already destructed.");
     return false;
     return false;
   }
   }
@@ -87,7 +87,7 @@ bool Dtool_Call_ExtractThisPointer(PyObject *self, Dtool_PyTypedObject &classdef
 bool Dtool_Call_ExtractThisPointer_NonConst(PyObject *self, Dtool_PyTypedObject &classdef,
 bool Dtool_Call_ExtractThisPointer_NonConst(PyObject *self, Dtool_PyTypedObject &classdef,
                                             void **answer, const char *method_name) {
                                             void **answer, const char *method_name) {
 
 
-  if (self == NULL || !DtoolCanThisBeAPandaInstance(self)) {
+  if (self == NULL || !DtoolCanThisBeAPandaInstance(self) || ((Dtool_PyInstDef *)self)->_ptr_to_object == NULL) {
     Dtool_Raise_TypeError("C++ object is not yet constructed, or already destructed.");
     Dtool_Raise_TypeError("C++ object is not yet constructed, or already destructed.");
     return false;
     return false;
   }
   }