From d430e611bb4d60f3ca7e22ae95aa88cee8a7f9a6 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 14 Apr 2015 15:47:35 +0200 Subject: [PATCH] size_t params of methods in template classes did not support 64-bit values on 64-bit systems --- dtool/src/cppparser/cppTypedefType.cxx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dtool/src/cppparser/cppTypedefType.cxx b/dtool/src/cppparser/cppTypedefType.cxx index b1c86d9da2..ceedd35f33 100644 --- a/dtool/src/cppparser/cppTypedefType.cxx +++ b/dtool/src/cppparser/cppTypedefType.cxx @@ -204,6 +204,19 @@ CPPDeclaration *CPPTypedefType:: substitute_decl(CPPDeclaration::SubstDecl &subst, CPPScope *current_scope, CPPScope *global_scope) { + if (_ident != NULL && _ident->get_scope(current_scope, global_scope) == global_scope) { + // Hack... I know that size_t etc is supposed to work fine, so + // preserve these top-level typedefs. + CPPDeclaration *top = + CPPType::substitute_decl(subst, current_scope, global_scope); + if (top != this) { + return top; + } + top = new CPPTypedefType(*this); + subst.insert(SubstDecl::value_type(this, top)); + return top; + } + return _type->substitute_decl(subst, current_scope, global_scope); // Bah, this doesn't seem to work, and I can't figure out why.