diff options
Diffstat (limited to 'sapi/activescript/scriptengine.cpp')
| -rw-r--r-- | sapi/activescript/scriptengine.cpp | 34 | 
1 files changed, 29 insertions, 5 deletions
| diff --git a/sapi/activescript/scriptengine.cpp b/sapi/activescript/scriptengine.cpp index 9c035169c7..3838169486 100644 --- a/sapi/activescript/scriptengine.cpp +++ b/sapi/activescript/scriptengine.cpp @@ -419,7 +419,7 @@ int TPHPScriptingEngine::create_id(OLECHAR *name, DISPID *dispid TSRMLS_DC)  	int i;  	for (i = 0; i < m_ids; i++) {  		if (!strcasecmp(m_names[i], aname.ansi_string())) { -			trace("already had this ID\n"); +			trace("already had ID %d for %s\n", i, m_names[i]);  			return i;  		}  	} @@ -764,7 +764,7 @@ static int execute_code_fragment(code_frag *frag,  		pv.value.str.val = frag->code;  		pv.value.str.len = frag->codelen; -		frag->opcodes = compile_string(&pv, "fragment (JIT)" TSRMLS_CC); +		frag->opcodes = compile_string(&pv, "fragment" TSRMLS_CC);  		if (!frag->opcodes) {  			trace("*** JIT compilation of cloned opcodes failed??"); @@ -1223,7 +1223,6 @@ STDMETHODIMP TPHPScriptingEngine::SetScriptSite(IActiveScriptSite *pass)  	if (pass) {  		m_basethread = tsrm_thread_id(); -		HRESULT ret = GIT_put(pass, IID_IActiveScriptSite, &m_asscookie);  	}  	if (m_pass) { @@ -1245,6 +1244,7 @@ STDMETHODIMP TPHPScriptingEngine::SetScriptSite(IActiveScriptSite *pass)  		trace("----> %s", php_win_err(ret));  		if (SUCCEEDED(ret)) { +			GIT_put(m_pass, IID_IActiveScriptSite, &m_asscookie);  			SetScriptState(SCRIPTSTATE_INITIALIZED);  		}  	} @@ -1374,7 +1374,7 @@ STDMETHODIMP TPHPScriptingEngine::AddNamedItem(LPCOLESTR pstrName, DWORD dwFlags  	TWideString name(pstrName);  	trace("AddNamedItem: %s (%08x) m_pass=%08x\n", name.ansi_string(), dwFlags, m_pass); -	res = m_pass->GetItemInfo(pstrName, SCRIPTINFO_IUNKNOWN, &punk, &ti); +	ASS_CALL(res, GetItemInfo, (pstrName, SCRIPTINFO_IUNKNOWN, &punk, &ti));  	if (SUCCEEDED(res)) {  		IDispatch *disp = NULL; @@ -1960,11 +1960,35 @@ public:  	TActiveScriptError(const char *filename, const uint lineno, const char *message)  	{ +		char *extra_buf, *dest; +		int msglen = strlen(message); + +		extra_buf = (char*)emalloc(2 * msglen + 1); + +		/* convert line endings so multi-line output looks reasonable in a GUI */ +		dest = extra_buf; +		while (*message) { +			if (*message == '\n') { +				*dest++ = '\r'; +				*dest++ = '\n'; +				message++; +			} else if (*message == '\r' && message[1] == '\n') { +				*dest++ = '\r'; +				*dest++ = '\n'; +				message+=2; +			} else { +				*dest++ = *message++; +			} +		} +		*dest = '\0'; +		  		m_refcount = 0; /* start with zero refcount because this object is passed  						 * directly to the script site; it will call addref */  		m_filename = TWideString::bstr_from_ansi((char*)filename); -		m_message = TWideString::bstr_from_ansi((char*)message); +		m_message = TWideString::bstr_from_ansi(extra_buf);  		m_lineno = lineno; + +		efree(extra_buf);  	}  	~TActiveScriptError() | 
