diff --git a/tools/binpac/src/pac_exttype.cc b/tools/binpac/src/pac_exttype.cc index 659d4cdc5e..65c89245f9 100644 --- a/tools/binpac/src/pac_exttype.cc +++ b/tools/binpac/src/pac_exttype.cc @@ -1,6 +1,7 @@ #include "pac_exttype.h" #include "pac_id.h" #include "pac_decl.h" +#include "pac_output.h" bool ExternType::DefineValueVar() const { @@ -40,6 +41,13 @@ string ExternType::EvalMember(const ID *member_id) const member_id->Name()); } +void ExternType::GenInitCode(Output* out_cc, Env* env) + { + if ( IsNumericType() || IsPointerType() ) + out_cc->println("%s = 0;", env->LValue(value_var())); + Type::GenInitCode(out_cc, env); + } + void ExternType::DoGenParseCode(Output* out, Env* env, const DataPtr& data, int flags) { ASSERT(0); diff --git a/tools/binpac/src/pac_exttype.h b/tools/binpac/src/pac_exttype.h index 6d81608195..a15ff6342e 100644 --- a/tools/binpac/src/pac_exttype.h +++ b/tools/binpac/src/pac_exttype.h @@ -26,6 +26,8 @@ public: bool IsNumericType() const { return ext_type_ == NUMBER; } bool IsPointerType() const { return ext_type_ == POINTER; } + void GenInitCode(Output *out_cc, Env *env); + protected: void DoGenParseCode(Output *out, Env *env, const DataPtr& data, int flags); void GenDynamicSize(Output *out, Env *env, const DataPtr& data);