@@ -30,6 +30,8 @@ along with LiveCode. If not see <http://www.gnu.org/licenses/>. */
3030#include " exec.h"
3131#include " field.h"
3232#include " variable.h"
33+ #include " handler.h"
34+ #include " hndlrlst.h"
3335
3436#include " osspec.h"
3537
@@ -79,7 +81,7 @@ bool MCExecContext::ConvertToString(MCValueRef p_value, MCStringRef& r_string)
7981 t_buffer_size = 0 ;
8082
8183 uint32_t t_length;
82- t_length = MCU_r8tos (t_buffer, t_buffer_size, MCNumberFetchAsReal ((MCNumberRef)p_value), nffw, nftrailing, nfforce );
84+ t_length = MCU_r8tos (t_buffer, t_buffer_size, MCNumberFetchAsReal ((MCNumberRef)p_value), m_nffw, m_nftrailing, m_nfforce );
8385
8486 bool t_success;
8587 t_success = MCStringCreateWithNativeCharsAndRelease ((char_t *)t_buffer, t_length, r_string);
@@ -109,7 +111,7 @@ bool MCExecContext::ConvertToNumber(MCValueRef p_value, MCNumberRef& r_number)
109111 double t_number;
110112 t_number = 0.0 ;
111113 if (MCStringGetLength (MCNameGetString ((MCNameRef)p_value)) != 0 )
112- if (!MCU_stor8 (MCStringGetOldString (MCNameGetString ((MCNameRef)p_value)), t_number, convertoctals ))
114+ if (!MCU_stor8 (MCStringGetOldString (MCNameGetString ((MCNameRef)p_value)), t_number, m_convertoctals ))
113115 break ;
114116 return MCNumberCreateWithReal (t_number, r_number);
115117 }
@@ -118,7 +120,7 @@ bool MCExecContext::ConvertToNumber(MCValueRef p_value, MCNumberRef& r_number)
118120 double t_number;
119121 t_number = 0.0 ;
120122 if (MCStringGetLength ((MCStringRef)p_value) != 0 )
121- if (!MCU_stor8 (MCStringGetOldString ((MCStringRef)p_value), t_number, convertoctals ))
123+ if (!MCU_stor8 (MCStringGetOldString ((MCStringRef)p_value), t_number, m_convertoctals ))
122124 break ;
123125 return MCNumberCreateWithReal (t_number, r_number);
124126 }
@@ -171,7 +173,7 @@ bool MCExecContext::ConvertToBoolean(MCValueRef p_value, MCBooleanRef &r_boolean
171173 switch (MCValueGetTypeCode (p_value))
172174 {
173175 case kMCValueTypeCodeBoolean :
174- r_boolean = MCValueRetain ((MCBooleanRef)value );
176+ r_boolean = MCValueRetain ((MCBooleanRef)p_value );
175177 return true ;
176178 case kMCValueTypeCodeNull :
177179 case kMCValueTypeCodeArray :
@@ -302,8 +304,20 @@ bool MCExecContext::ConvertToLegacyColor(MCValueRef p_value, MCColor& r_color)
302304
303305bool MCExecContext::ConvertToBool (MCValueRef p_value, bool & r_bool)
304306{
305- bool t = ConvertToBool (p_value, r_bool);
306- return t;
307+ if ((MCBooleanRef)p_value == kMCTrue )
308+ {
309+ r_bool = true ;
310+ return true ;
311+ }
312+
313+ MCAutoBooleanRef t_boolean;
314+ if (ConvertToBoolean (p_value, &t_boolean))
315+ {
316+ r_bool = *t_boolean == kMCTrue ;
317+ return true ;
318+ }
319+
320+ return false ;
307321}
308322
309323bool MCExecContext::ConvertToLegacyPoint (MCValueRef p_value, MCPoint& r_point)
@@ -615,6 +629,7 @@ bool MCExecContext::EvaluateExpression(MCExpression *p_expr, MCValueRef& r_resul
615629
616630 return true ;
617631}
632+ #endif
618633
619634bool MCExecContext::TryToEvaluateExpression (MCExpression *p_expr, uint2 line, uint2 pos, Exec_errors p_error, MCValueRef& r_result)
620635{
@@ -640,7 +655,6 @@ bool MCExecContext::TryToEvaluateExpression(MCExpression *p_expr, uint2 line, ui
640655 LegacyThrow (p_error);
641656 return false ;
642657}
643- #endif
644658
645659bool MCExecContext::TryToEvaluateParameter (MCParameter *p_param, uint2 line, uint2 pos, Exec_errors p_error, MCValueRef& r_result)
646660{
@@ -1225,7 +1239,8 @@ bool MCExecContext::EnsurePrivacyIsAllowed(void)
12251239
12261240// //////////////////////////////////////////////////////////////////////////////
12271241
1228- void MCExecContext::GetIt () const
1242+ // MW-2013-11-08: [[ RefactorIt ]] Returns the it var for the current context.
1243+ MCVarref* MCExecContext::GetIt () const
12291244{
12301245 // If we have a handler, then get it from there.
12311246 if (m_curhandler != nil)
@@ -1257,6 +1272,26 @@ void MCExecContext::SetItToEmpty(void)
12571272
12581273// //////////////////////////////////////////////////////////////////////////////
12591274
1275+ // MW-2011-06-22: [[ SERVER ]] Provides augmented functionality for finding
1276+ // variables if there is no handler (i.e. global server scope).
1277+ Parse_stat MCExecContext::FindVar (MCNameRef p_name, MCVarref **r_var)
1278+ {
1279+ Parse_stat t_stat;
1280+ t_stat = PS_ERROR ;
1281+
1282+ if (m_curhandler != NULL )
1283+ t_stat = m_curhandler -> findvar (p_name, r_var);
1284+ else if (m_hlist != NULL )
1285+ {
1286+ // MW-2011-08-23: [[ UQL ]] We are searching in global context, so do include UQLs.
1287+ t_stat = m_hlist -> findvar (p_name, false , r_var);
1288+ }
1289+
1290+ return t_stat;
1291+ }
1292+
1293+ // //////////////////////////////////////////////////////////////////////////////
1294+
12601295void MCExecContext::LegacyThrow (Exec_errors p_error, MCValueRef p_hint)
12611296{
12621297 MCeerror -> add (p_error, 0 , 0 , p_hint);
0 commit comments