Assorted fixes

This commit is contained in:
rdb 2016-06-03 22:23:42 +02:00
parent 08db72a2ca
commit 8d05ef3022
17 changed files with 55 additions and 30 deletions

View File

@ -250,7 +250,7 @@ inline static unsigned CountDecimalDigit32(uint32_t n) {
}
inline static void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) {
static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 0, 0, 0, 0, 0 };
const DiyFp one(uint64_t(1) << -Mp.e, Mp.e);
const DiyFp wp_w = Mp - W;
uint32_t p1 = static_cast<uint32_t>(Mp.f >> -one.e);

View File

@ -6262,7 +6262,7 @@ write_getset(ostream &out, Object *obj, Property *property) {
out <<
" " << cClassName << " *local_this = NULL;\n"
" if (!Dtool_Call_ExtractThisPointer(self, Dtool_" << ClassName << ", (void **)&local_this)) {\n"
" return NULL;\n"
" return -1;\n"
" }\n"
" return (Py_ssize_t)" << len_remap->get_call_str("local_this", pexprs) << ";\n";
} else {

View File

@ -172,7 +172,6 @@ void *DTOOL_Call_GetPointerThis(PyObject *self) {
return NULL;
}
#ifndef NDEBUG
/**
* This is similar to a PyErr_Occurred() check, except that it also checks
* Notify to see if an assertion has occurred. If that is the case, then it
@ -193,7 +192,6 @@ bool _Dtool_CheckErrorOccurred() {
}
return false;
}
#endif // NDEBUG
/**
* Raises an AssertionError containing the last thrown assert message, and

View File

@ -16,10 +16,10 @@ else:
import cPickle as pickle
import thread
SUFFIX_INC = [".cxx",".c",".h",".I",".yxx",".lxx",".mm",".rc",".r"]
SUFFIX_INC = [".cxx",".cpp",".c",".h",".I",".yxx",".lxx",".mm",".rc",".r"]
SUFFIX_DLL = [".dll",".dlo",".dle",".dli",".dlm",".mll",".exe",".pyd",".ocx"]
SUFFIX_LIB = [".lib",".ilb"]
VCS_DIRS = set(["CVS", "CVSROOT", ".git", ".hg"])
VCS_DIRS = set(["CVS", "CVSROOT", ".git", ".hg", "__pycache__"])
VCS_FILES = set([".cvsignore", ".gitignore", ".gitmodules", ".hgignore"])
STARTTIME = time.time()
MAINTHREAD = threading.currentThread()
@ -1392,7 +1392,12 @@ def PkgConfigGetDefSymbols(pkgname, tool = "pkg-config"):
for l in result.split(" "):
if (l.startswith("-D")):
d = l.replace("-D", "").replace("\"", "").strip().split("=")
if (len(d) == 1):
if d[0] in ('NDEBUG', '_DEBUG'):
# Setting one of these flags by accident could cause serious harm.
if GetVerbose():
print("Ignoring %s flag provided by %s" % (l, tool))
elif len(d) == 1:
defs[d[0]] = ""
else:
defs[d[0]] = d[1]

View File

@ -38,7 +38,7 @@ PUBLISHED:
MAKE_SEQ(get_components, get_num_components, get_component);
INLINE void set_component(int i, const EggAttributes *attrib);
MAKE_PROPERTY(components, get_num_components, get_component, set_component);
MAKE_SEQ_PROPERTY(components, get_num_components, get_component, set_component);
INLINE bool triangulate_into(EggGroupNode *container) const;
PT(EggCompositePrimitive) triangulate_in_place();

View File

@ -15,7 +15,7 @@
*
*/
template<class T>
INLINE PointerTo<T>::
ALWAYS_INLINE PointerTo<T>::
PointerTo(To *ptr) : PointerToBase<T>(ptr) {
}
@ -136,7 +136,7 @@ operator = (const PointerTo<T> &copy) {
*
*/
template<class T>
INLINE ConstPointerTo<T>::
ALWAYS_INLINE ConstPointerTo<T>::
ConstPointerTo(const TYPENAME ConstPointerTo<T>::To *ptr) :
PointerToBase<T>((TYPENAME ConstPointerTo<T>::To *)ptr)
{

View File

@ -58,7 +58,8 @@ class PointerTo : public PointerToBase<T> {
public:
typedef TYPENAME PointerToBase<T>::To To;
PUBLISHED:
INLINE PointerTo(To *ptr = (To *)NULL);
ALWAYS_INLINE PointerTo() DEFAULT_CTOR;
ALWAYS_INLINE PointerTo(To *ptr);
INLINE PointerTo(const PointerTo<T> &copy);
INLINE ~PointerTo();
@ -119,7 +120,8 @@ class ConstPointerTo : public PointerToBase<T> {
public:
typedef TYPENAME PointerToBase<T>::To To;
PUBLISHED:
INLINE ConstPointerTo(const To *ptr = (const To *)NULL);
ALWAYS_INLINE ConstPointerTo() DEFAULT_CTOR;
ALWAYS_INLINE ConstPointerTo(const To *ptr);
INLINE ConstPointerTo(const PointerTo<T> &copy);
INLINE ConstPointerTo(const ConstPointerTo<T> &copy);
INLINE ~ConstPointerTo();

View File

@ -17,7 +17,15 @@
template<class T>
INLINE PointerToBase<T>::
PointerToBase(To *ptr) {
reassign(ptr);
_void_ptr = (void *)ptr;
if (ptr != (To *)NULL) {
ptr->ref();
#ifdef DO_MEMORY_USAGE
if (MemoryUsage::get_track_memory_usage()) {
update_type(ptr);
}
#endif
}
}
/**
@ -26,7 +34,16 @@ PointerToBase(To *ptr) {
template<class T>
INLINE PointerToBase<T>::
PointerToBase(const PointerToBase<T> &copy) {
reassign(copy);
_void_ptr = copy._void_ptr;
if (_void_ptr != NULL) {
To *ptr = (To *)_void_ptr;
ptr->ref();
#ifdef DO_MEMORY_USAGE
if (MemoryUsage::get_track_memory_usage()) {
update_type(ptr);
}
#endif
}
}
/**
@ -35,7 +52,10 @@ PointerToBase(const PointerToBase<T> &copy) {
template<class T>
INLINE PointerToBase<T>::
~PointerToBase() {
reassign((To *)NULL);
if (_void_ptr != NULL) {
unref_delete((To *)_void_ptr);
_void_ptr = NULL;
}
}
#ifdef USE_MOVE_SEMANTICS

View File

@ -31,6 +31,7 @@ public:
typedef T To;
protected:
ALWAYS_INLINE PointerToBase() DEFAULT_CTOR;
INLINE PointerToBase(To *ptr);
INLINE PointerToBase(const PointerToBase<T> &copy);
INLINE ~PointerToBase();

View File

@ -22,8 +22,6 @@
#include "pnmReader.h"
#include "pnmWriter.h"
#include "stb_image.h"
/**
* For reading images via the public domain stb_image.h library. This is used
* when compiling without support for more specific libraries that are more

View File

@ -11,16 +11,6 @@
* @date 2000-03-01
*/
/**
* The default constructor must do nothing, because we can't guarantee
* ordering of static initializers. If the constructor tried to initialize
* its value, it might happen after the value had already been set previously
* by another static initializer!
*/
INLINE ButtonHandle::
ButtonHandle() {
}
/**
* Constructs a ButtonHandle with the corresponding index number, which may
* have been returned by an earlier call to ButtonHandle::get_index().

View File

@ -25,7 +25,11 @@
*/
class EXPCL_PANDA_PUTIL ButtonHandle FINAL {
PUBLISHED:
INLINE ButtonHandle();
// The default constructor must do nothing, because we can't guarantee
// ordering of static initializers. If the constructor tried to initialize
// its value, it might happen after the value had already been set
// previously by another static initializer!
INLINE ButtonHandle() DEFAULT_CTOR;
CONSTEXPR ButtonHandle(int index);
INLINE ButtonHandle(const ButtonHandle &copy);
ButtonHandle(const string &name);

View File

@ -126,8 +126,10 @@ do_python_callback(CallbackData *cbdata) {
Py_DECREF(args);
if (result == (PyObject *)NULL) {
util_cat.error()
<< "Exception occurred in " << *this << "\n";
if (PyErr_Occurred() != PyExc_SystemExit) {
util_cat.error()
<< "Exception occurred in " << *this << "\n";
}
} else {
Py_DECREF(result);
}

View File

@ -34,6 +34,8 @@ PUBLISHED:
void set_function(PyObject *function);
PyObject *get_function();
MAKE_PROPERTY(function, get_function, set_function);
public:
virtual void do_callback(CallbackData *cbdata);

View File

@ -77,6 +77,7 @@ public:
virtual void write_datagram(BamWriter *manager, Datagram &dg);
virtual void write_recorder(BamWriter *manager, Datagram &dg);
INLINE virtual int get_ref_count() const FINAL { return ReferenceCount::get_ref_count(); };
INLINE virtual void ref() const FINAL { ReferenceCount::ref(); };
INLINE virtual bool unref() const FINAL { return ReferenceCount::unref(); };

View File

@ -61,6 +61,7 @@ public:
// We can't let RecorderBase inherit from ReferenceCount, so we define these
// so we can still manage the reference count.
virtual int get_ref_count() const=0;
virtual void ref() const=0;
virtual bool unref() const=0;

View File

@ -74,6 +74,7 @@ public:
static void register_with_read_factory();
virtual void write_recorder(BamWriter *manager, Datagram &dg);
INLINE virtual int get_ref_count() const FINAL { return ReferenceCount::get_ref_count(); };
INLINE virtual void ref() const FINAL { ReferenceCount::ref(); };
INLINE virtual bool unref() const FINAL { return ReferenceCount::unref(); };