[Turn off line numbering]1: arg code, @dest; 2: var errors, result, method; 3: 4: dest = dest ? dest[1] : this(); 5: if (!(sender() in [$scheduler, $root])) 6: (> .perms(sender()) <); 7: 8: // Compile the code. 9: method = tosym("tmp_eval_" + tostr(time())); 10: errors = .add_method(code, method); 11: if (errors) 12: return ['errors, errors, 0, 0]; 13: 14: // Evaluate the expression. Be sure to remove it afterwards, so that no 15: // one else can call it. 16: catch any { 17: result = (> dest.(method)() <); 18: } with { 19: (| del_method(method) |); 20: rethrow(error()); 21: } 22: (| del_method(method) |); 23: return ['result, result];
// Created as a part of ColdCore, see: @help Credit