From: <ki...@us...> - 2008-07-09 20:22:37
|
Revision: 5672 http://nsis.svn.sourceforge.net/nsis/?rev=5672&view=rev Author: kichik Date: 2008-07-09 13:22:47 -0700 (Wed, 09 Jul 2008) Log Message: ----------- fix function calls by saving offset in nobj_function so it works for more than just the first use of the function Modified Paths: -------------- NSIS/branches/nobjs/Source/build.cpp NSIS/branches/nobjs/Source/nobj/function.cpp NSIS/branches/nobjs/Source/nobj/function.h Modified: NSIS/branches/nobjs/Source/build.cpp =================================================================== --- NSIS/branches/nobjs/Source/build.cpp 2008-07-09 20:21:55 UTC (rev 5671) +++ NSIS/branches/nobjs/Source/build.cpp 2008-07-09 20:22:47 UTC (rev 5672) @@ -1546,13 +1546,14 @@ return 1; func->set_used(); + func->set_offset(cur_code_start); string fname = string("function \"") + func_name + string("\""); if (resolve_instructions(fname.c_str(), str, cur_code_start, cur_code_size)) return 1; } - ofs[0] = cur_code_start; + ofs[0] = func->get_offset(); return 0; } Modified: NSIS/branches/nobjs/Source/nobj/function.cpp =================================================================== --- NSIS/branches/nobjs/Source/nobj/function.cpp 2008-07-09 20:21:55 UTC (rev 5671) +++ NSIS/branches/nobjs/Source/nobj/function.cpp 2008-07-09 20:22:47 UTC (rev 5672) @@ -22,6 +22,11 @@ * nobj_function */ +nobj_function::nobj_function() + : m_used(false), m_offset(0) +{ +} + bool nobj_function::is_used() { return m_used; @@ -31,3 +36,13 @@ { m_used = true; } + +int nobj_function::get_offset() +{ + return m_offset; +} + +void nobj_function::set_offset(int offset) +{ + m_offset = offset; +} Modified: NSIS/branches/nobjs/Source/nobj/function.h =================================================================== --- NSIS/branches/nobjs/Source/nobj/function.h 2008-07-09 20:21:55 UTC (rev 5671) +++ NSIS/branches/nobjs/Source/nobj/function.h 2008-07-09 20:22:47 UTC (rev 5672) @@ -29,12 +29,18 @@ public: + nobj_function(); + bool is_used(); void set_used(); + int get_offset(); + void set_offset(int offset); + private: bool m_used; + int m_offset; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |