]> git.mxchange.org Git - flightgear.git/blobdiff - src/Scripting/nasal-props.cxx
Merge branch 'maint2' into next
[flightgear.git] / src / Scripting / nasal-props.cxx
index 359eb9131e2c1871160f59941b10b066a22d03d4..123af75391127d0eddf19062d928d2a4548309aa 100644 (file)
@@ -306,10 +306,12 @@ static naRef f_alias(naContext c, naRef me, int argc, naRef* args)
     NODEARG();
     SGPropertyNode* al;
     naRef prop = naVec_get(argv, 0);
-    if(naIsString(prop)) al = globals->get_props()->getNode(naStr_data(prop), true);
-    else if(naIsGhost(prop)) al = *(SGPropertyNode_ptr*)naGhost_ptr(prop);
-    else {
-        naRuntimeError(c, "props.alias() with bad argument");
+    try {
+        if(naIsString(prop)) al = globals->get_props()->getNode(naStr_data(prop), true);
+        else if(naIsGhost(prop)) al = *(SGPropertyNode_ptr*)naGhost_ptr(prop);
+        else throw string("props.alias() with bad argument");
+    } catch (const string& err) {
+        naRuntimeError(c, (char *)err.c_str());
         return naNil();
     }
     return naNum((*node)->alias(al));
@@ -321,6 +323,12 @@ static naRef f_unalias(naContext c, naRef me, int argc, naRef* args)
     return naNum((*node)->unalias());
 }
 
+static naRef f_getAliasTarget(naContext c, naRef me, int argc, naRef* args)
+{
+    NODEARG();
+    return propNodeGhostCreate(c, (*node)->getAliasTarget());
+}
+
 static naRef f_getNode(naContext c, naRef me, int argc, naRef* args)
 {
     NODEARG();
@@ -368,6 +376,7 @@ static struct {
     { f_removeChildren, "_removeChildren" },
     { f_alias, "_alias" },
     { f_unalias, "_unalias" },
+    { f_getAliasTarget, "_getAliasTarget" },
     { f_getNode, "_getNode" },
     { f_new, "_new" },
     { f_globals, "_globals" },