From: Alyssa M. <fu...@us...> - 2010-08-20 10:55:43
|
gemrb: Infinity Engine emulator The branch master has been updated via 3d6539ed22d85bffd9f5525278873eed3b07f695 (commit) Summary of changes: gemrb/plugins/GUIScript/GUIScript.cpp | 38 +++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 11 deletions(-) from 4df068f9a91757bc6cbd803d28566efa9091cdff (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=3d6539ed22d85bffd9f5525278873eed3b07f695 commit 3d6539ed22d85bffd9f5525278873eed3b07f695 Author: Alyssa Milburn <fuzzie@risa.(none)> Date: Fri Aug 20 12:47:27 2010 +0200 revert e214601e and cf93e59a (passing FILE* around causes far too much trouble) diff --git a/gemrb/plugins/GUIScript/GUIScript.cpp b/gemrb/plugins/GUIScript/GUIScript.cpp index 9d35572..c2fbdce 100644 --- a/gemrb/plugins/GUIScript/GUIScript.cpp +++ b/gemrb/plugins/GUIScript/GUIScript.cpp @@ -9668,16 +9668,6 @@ bool GUIScript::Init(void) return false; } - // TODO: Put this file somewhere user editable - // TODO: Search multiple places for this file - char includeFile[_MAX_PATH]; - PathJoin(includeFile, core->GUIScriptsPath, "GUIScripts/include.py", NULL); - FILE* includeFP = fopen(includeFile, "rb"); - if ((includeFP == NULL) || (PyRun_SimpleFileEx(includeFP, includeFile, true) == -1)) { - printMessage( "GUIScript", " ", RED ); - printf("console include file failed to load"); - } - PyObject *pMainMod = PyImport_AddModule( "__main__" ); /* pMainMod is a borrowed reference */ pMainDic = PyModule_GetDict( pMainMod ); @@ -9806,7 +9796,33 @@ bool GUIScript::RunFunction(const char *ModuleName, const char* FunctionName, bo /** Exec a single String */ void GUIScript::ExecString(const char* string) { - if (PyRun_SimpleString((char*) string) == -1) { + char *buffer; + char include[_MAX_PATH]; + FileStream fs; + + PathJoin(include, core->GUIScriptsPath, "GUIScripts/include.py", NULL); + + int len1 = 0; + int len2 = strlen(string)+1; + if (fs.Open( include, true )) { + len1 = fs.Remains(); + if (len1<0) len1=0; + } + + buffer = (char *) malloc(len1+len2); + if (!buffer) { + return; + } + + if (len1) { + len1 = fs.Read(buffer, len1); + if (len1==GEM_ERROR) len1=0; + } + memcpy(buffer+len1, string, len2); + + int ret = PyRun_SimpleString( (char *) buffer ); + free(buffer); + if (ret == -1) { if (PyErr_Occurred()) { PyErr_Print(); } ----------------------------------------------------------------------- This is an automated email from the git hooks/post-receive script. -- gemrb: Infinity Engine emulator |