diff options
author | BlueWall | 2012-09-11 22:58:21 -0400 |
---|---|---|
committer | BlueWall | 2012-09-11 22:58:21 -0400 |
commit | e9322b0bf714251719919db8638bf92f19289190 (patch) | |
tree | 4eca77cc71f4428e57f0a4c176189e114bfb9397 /OpenSim/Region | |
parent | Fix prebuild.xml format for reference (diff) | |
parent | minor: Comment out friends notification log spam for now. (diff) | |
download | opensim-SC_OLD-e9322b0bf714251719919db8638bf92f19289190.zip opensim-SC_OLD-e9322b0bf714251719919db8638bf92f19289190.tar.gz opensim-SC_OLD-e9322b0bf714251719919db8638bf92f19289190.tar.bz2 opensim-SC_OLD-e9322b0bf714251719919db8638bf92f19289190.tar.xz |
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region')
8 files changed, 107 insertions, 54 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 769eea8..ed339fd 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -332,10 +332,6 @@ namespace OpenSim | |||
332 | "show circuits", | 332 | "show circuits", |
333 | "Show agent circuit data", HandleShow); | 333 | "Show agent circuit data", HandleShow); |
334 | 334 | ||
335 | m_console.Commands.AddCommand("Comms", false, "show http-handlers", | ||
336 | "show http-handlers", | ||
337 | "Show all registered http handlers", HandleShow); | ||
338 | |||
339 | m_console.Commands.AddCommand("Comms", false, "show pending-objects", | 335 | m_console.Commands.AddCommand("Comms", false, "show pending-objects", |
340 | "show pending-objects", | 336 | "show pending-objects", |
341 | "Show # of objects on the pending queues of all scene viewers", HandleShow); | 337 | "Show # of objects on the pending queues of all scene viewers", HandleShow); |
@@ -1013,33 +1009,6 @@ namespace OpenSim | |||
1013 | HandleShowCircuits(); | 1009 | HandleShowCircuits(); |
1014 | break; | 1010 | break; |
1015 | 1011 | ||
1016 | case "http-handlers": | ||
1017 | System.Text.StringBuilder handlers = new System.Text.StringBuilder("Registered HTTP Handlers:\n"); | ||
1018 | |||
1019 | handlers.AppendFormat("* XMLRPC:\n"); | ||
1020 | foreach (String s in HttpServer.GetXmlRpcHandlerKeys()) | ||
1021 | handlers.AppendFormat("\t{0}\n", s); | ||
1022 | |||
1023 | handlers.AppendFormat("* HTTP:\n"); | ||
1024 | List<String> poll = HttpServer.GetPollServiceHandlerKeys(); | ||
1025 | foreach (String s in HttpServer.GetHTTPHandlerKeys()) | ||
1026 | handlers.AppendFormat("\t{0} {1}\n", s, (poll.Contains(s) ? "(poll service)" : string.Empty)); | ||
1027 | |||
1028 | handlers.AppendFormat("* Agent:\n"); | ||
1029 | foreach (String s in HttpServer.GetAgentHandlerKeys()) | ||
1030 | handlers.AppendFormat("\t{0}\n", s); | ||
1031 | |||
1032 | handlers.AppendFormat("* LLSD:\n"); | ||
1033 | foreach (String s in HttpServer.GetLLSDHandlerKeys()) | ||
1034 | handlers.AppendFormat("\t{0}\n", s); | ||
1035 | |||
1036 | handlers.AppendFormat("* StreamHandlers ({0}):\n", HttpServer.GetStreamHandlerKeys().Count); | ||
1037 | foreach (String s in HttpServer.GetStreamHandlerKeys()) | ||
1038 | handlers.AppendFormat("\t{0}\n", s); | ||
1039 | |||
1040 | MainConsole.Instance.Output(handlers.ToString()); | ||
1041 | break; | ||
1042 | |||
1043 | case "modules": | 1012 | case "modules": |
1044 | MainConsole.Instance.Output("The currently loaded shared modules are:"); | 1013 | MainConsole.Instance.Output("The currently loaded shared modules are:"); |
1045 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) | 1014 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 24ec435..11db18a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -482,9 +482,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
482 | Util.FireAndForget( | 482 | Util.FireAndForget( |
483 | delegate | 483 | delegate |
484 | { | 484 | { |
485 | m_log.DebugFormat( | 485 | // m_log.DebugFormat( |
486 | "[FRIENDS MODULE]: Notifying {0} friends of {1} of online status {2}", | 486 | // "[FRIENDS MODULE]: Notifying {0} friends of {1} of online status {2}", |
487 | friendList.Count, agentID, online); | 487 | // friendList.Count, agentID, online); |
488 | 488 | ||
489 | // Notify about this user status | 489 | // Notify about this user status |
490 | StatusNotify(friendList, agentID, online); | 490 | StatusNotify(friendList, agentID, online); |
diff --git a/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs b/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs index baac6e8..da39e95 100644 --- a/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs | |||
@@ -35,7 +35,7 @@ namespace OpenSim.Region.Framework.Interfaces | |||
35 | 35 | ||
36 | public interface IJsonStoreModule | 36 | public interface IJsonStoreModule |
37 | { | 37 | { |
38 | bool CreateStore(string value, out UUID result); | 38 | bool CreateStore(string value, ref UUID result); |
39 | bool DestroyStore(UUID storeID); | 39 | bool DestroyStore(UUID storeID); |
40 | bool TestPath(UUID storeID, string path, bool useJson); | 40 | bool TestPath(UUID storeID, string path, bool useJson); |
41 | bool SetValue(UUID storeID, string path, string value, bool useJson); | 41 | bool SetValue(UUID storeID, string path, string value, bool useJson); |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 4d65be9..02c032e 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -47,26 +47,71 @@ namespace OpenSim.Region.Framework.Scenes | |||
47 | 47 | ||
48 | public delegate void OnFrameDelegate(); | 48 | public delegate void OnFrameDelegate(); |
49 | 49 | ||
50 | /// <summary> | ||
51 | /// Triggered on each sim frame. | ||
52 | /// </summary> | ||
53 | /// <remarks> | ||
54 | /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.Update"/> | ||
55 | /// Core uses it for things like Sun, Wind & Clouds | ||
56 | /// The MRM module also uses it. | ||
57 | /// </remarks> | ||
50 | public event OnFrameDelegate OnFrame; | 58 | public event OnFrameDelegate OnFrame; |
51 | 59 | ||
52 | public delegate void ClientMovement(ScenePresence client); | 60 | public delegate void ClientMovement(ScenePresence client); |
53 | 61 | ||
62 | /// <summary> | ||
63 | /// Trigerred when an agent moves. | ||
64 | /// </summary> | ||
65 | /// <remarks> | ||
66 | /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.ScenePresence.HandleAgentUpdate"/> | ||
67 | /// prior to <see cref="OpenSim.Region.Framework.Scenes.ScenePresence.TriggerScenePresenceUpdated"/> | ||
68 | /// </remarks> | ||
54 | public event ClientMovement OnClientMovement; | 69 | public event ClientMovement OnClientMovement; |
55 | 70 | ||
56 | public delegate void OnTerrainTaintedDelegate(); | 71 | public delegate void OnTerrainTaintedDelegate(); |
57 | 72 | ||
73 | /// <summary> | ||
74 | /// Triggered if the terrain has been edited | ||
75 | /// </summary> | ||
76 | /// <remarks> | ||
77 | /// This gets triggered in <see cref="OpenSim.Region.CoreModules.World.Terrain.CheckForTerrainUpdates"/> | ||
78 | /// after it determines that an update has been made. | ||
79 | /// </remarks> | ||
58 | public event OnTerrainTaintedDelegate OnTerrainTainted; | 80 | public event OnTerrainTaintedDelegate OnTerrainTainted; |
59 | 81 | ||
60 | public delegate void OnTerrainTickDelegate(); | 82 | public delegate void OnTerrainTickDelegate(); |
61 | 83 | ||
84 | /// <summary> | ||
85 | /// Triggered if the terrain has been edited | ||
86 | /// </summary> | ||
87 | /// <remarks> | ||
88 | /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.UpdateTerrain"/> | ||
89 | /// but is used by core solely to update the physics engine. | ||
90 | /// </remarks> | ||
62 | public event OnTerrainTickDelegate OnTerrainTick; | 91 | public event OnTerrainTickDelegate OnTerrainTick; |
63 | 92 | ||
64 | public delegate void OnBackupDelegate(ISimulationDataService datastore, bool forceBackup); | 93 | public delegate void OnBackupDelegate(ISimulationDataService datastore, bool forceBackup); |
65 | 94 | ||
95 | /// <summary> | ||
96 | /// Triggered when a region is backed up/persisted to storage | ||
97 | /// </summary> | ||
98 | /// <remarks> | ||
99 | /// This gets triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.Backup"/> | ||
100 | /// and is fired before the persistence occurs. | ||
101 | /// </remarks> | ||
66 | public event OnBackupDelegate OnBackup; | 102 | public event OnBackupDelegate OnBackup; |
67 | 103 | ||
68 | public delegate void OnClientConnectCoreDelegate(IClientCore client); | 104 | public delegate void OnClientConnectCoreDelegate(IClientCore client); |
69 | 105 | ||
106 | /// <summary> | ||
107 | /// Triggered when a new client connects to the scene. | ||
108 | /// </summary> | ||
109 | /// <remarks> | ||
110 | /// This gets triggered in <see cref="TriggerOnNewClient"/>, | ||
111 | /// which checks if an instance of <see cref="OpenSim.Framework.IClientAPI"/> | ||
112 | /// also implements <see cref="OpenSim.Framework.Client.IClientCore"/> and as such, | ||
113 | /// is not triggered by <see cref="OpenSim.Region.OptionalModules.World.NPC">NPCs</see>. | ||
114 | /// </remarks> | ||
70 | public event OnClientConnectCoreDelegate OnClientConnect; | 115 | public event OnClientConnectCoreDelegate OnClientConnect; |
71 | 116 | ||
72 | public delegate void OnNewClientDelegate(IClientAPI client); | 117 | public delegate void OnNewClientDelegate(IClientAPI client); |
@@ -87,10 +132,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
87 | 132 | ||
88 | public delegate void OnNewPresenceDelegate(ScenePresence presence); | 133 | public delegate void OnNewPresenceDelegate(ScenePresence presence); |
89 | 134 | ||
135 | /// <summary> | ||
136 | /// Triggered when a new presence is added to the scene | ||
137 | /// </summary> | ||
138 | /// <remarks> | ||
139 | /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewClient"/> which is used by both | ||
140 | /// <see cref="OpenSim.Framework.PresenceType.User">users</see> and <see cref="OpenSim.Framework.PresenceType.Npc">NPCs</see> | ||
141 | /// </remarks> | ||
90 | public event OnNewPresenceDelegate OnNewPresence; | 142 | public event OnNewPresenceDelegate OnNewPresence; |
91 | 143 | ||
92 | public delegate void OnRemovePresenceDelegate(UUID agentId); | 144 | public delegate void OnRemovePresenceDelegate(UUID agentId); |
93 | 145 | ||
146 | /// <summary> | ||
147 | /// Triggered when a presence is removed from the scene | ||
148 | /// </summary> | ||
149 | /// <remarks> | ||
150 | /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewClient"/> which is used by both | ||
151 | /// <see cref="OpenSim.Framework.PresenceType.User">users</see> and <see cref="OpenSim.Framework.PresenceType.Npc">NPCs</see> | ||
152 | /// </remarks> | ||
94 | public event OnRemovePresenceDelegate OnRemovePresence; | 153 | public event OnRemovePresenceDelegate OnRemovePresence; |
95 | 154 | ||
96 | public delegate void OnParcelPrimCountUpdateDelegate(); | 155 | public delegate void OnParcelPrimCountUpdateDelegate(); |
@@ -481,6 +540,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
481 | /// <param name="copy"></param> | 540 | /// <param name="copy"></param> |
482 | /// <param name="original"></param> | 541 | /// <param name="original"></param> |
483 | /// <param name="userExposed">True if the duplicate will immediately be in the scene, false otherwise</param> | 542 | /// <param name="userExposed">True if the duplicate will immediately be in the scene, false otherwise</param> |
543 | /// <remarks> | ||
544 | /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.SceneObjectPart.Copy"/> | ||
545 | /// </remarks> | ||
484 | public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; | 546 | public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; |
485 | public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); | 547 | public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); |
486 | 548 | ||
@@ -589,8 +651,29 @@ namespace OpenSim.Region.Framework.Scenes | |||
589 | 651 | ||
590 | public delegate void LandBuy(Object sender, LandBuyArgs e); | 652 | public delegate void LandBuy(Object sender, LandBuyArgs e); |
591 | 653 | ||
654 | /// <summary> | ||
655 | /// Triggered when an attempt to transfer grid currency occurs | ||
656 | /// </summary> | ||
657 | /// <remarks> | ||
658 | /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.ProcessMoneyTransferRequest"/> | ||
659 | /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.SubscribeToClientGridEvents"/> | ||
660 | /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.SubscribeToClientEvents"/> | ||
661 | /// via <see cref="OpenSim.Region.Framework.Scenes.Scene.AddNewClient"/> | ||
662 | /// </remarks> | ||
592 | public event MoneyTransferEvent OnMoneyTransfer; | 663 | public event MoneyTransferEvent OnMoneyTransfer; |
664 | |||
665 | /// <summary> | ||
666 | /// Triggered after after <see cref="OnValidateLandBuy"/> | ||
667 | /// </summary> | ||
593 | public event LandBuy OnLandBuy; | 668 | public event LandBuy OnLandBuy; |
669 | |||
670 | /// <summary> | ||
671 | /// Triggered to allow or prevent a real estate transaction | ||
672 | /// </summary> | ||
673 | /// <remarks> | ||
674 | /// Triggered in <see cref="OpenSim.Region.Framework.Scenes.Scene.ProcessParcelBuy"/> | ||
675 | /// <seealso cref="OpenSim.Region.OptionalModules.World.MoneyModule.SampleMoneyModule.ValidateLandBuy"/> | ||
676 | /// </remarks> | ||
594 | public event LandBuy OnValidateLandBuy; | 677 | public event LandBuy OnValidateLandBuy; |
595 | 678 | ||
596 | public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID) | 679 | public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID) |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index e528288..ac26be7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -2022,13 +2022,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2022 | m_scene.m_linksetCapacity) | 2022 | m_scene.m_linksetCapacity) |
2023 | { | 2023 | { |
2024 | m_log.DebugFormat( | 2024 | m_log.DebugFormat( |
2025 | "[SCENE OBJECT GROUP]: Cannot link group with root" + | 2025 | "[SCENE OBJECT GROUP]: Cannot link group with root" + |
2026 | " part {0}, {1} ({2} prims) to group with root part" + | 2026 | " part {0}, {1} ({2} prims) to group with root part" + |
2027 | " {3}, {4} ({5} prims) because the new linkset" + | 2027 | " {3}, {4} ({5} prims) because the new linkset" + |
2028 | " would exceed the configured maximum of {6}", | 2028 | " would exceed the configured maximum of {6}", |
2029 | objectGroup.RootPart.Name, objectGroup.RootPart.UUID, | 2029 | objectGroup.RootPart.Name, objectGroup.RootPart.UUID, |
2030 | objectGroup.PrimCount, RootPart.Name, RootPart.UUID, | 2030 | objectGroup.PrimCount, RootPart.Name, RootPart.UUID, |
2031 | PrimCount, m_scene.m_linksetCapacity); | 2031 | PrimCount, m_scene.m_linksetCapacity); |
2032 | |||
2032 | return; | 2033 | return; |
2033 | } | 2034 | } |
2034 | 2035 | ||
diff --git a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreModule.cs b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreModule.cs index 311531c..732c28f 100644 --- a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreModule.cs | |||
@@ -175,14 +175,15 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore | |||
175 | /// | 175 | /// |
176 | /// </summary> | 176 | /// </summary> |
177 | // ----------------------------------------------------------------- | 177 | // ----------------------------------------------------------------- |
178 | public bool CreateStore(string value, out UUID result) | 178 | public bool CreateStore(string value, ref UUID result) |
179 | { | 179 | { |
180 | result = UUID.Zero; | 180 | if (result == UUID.Zero) |
181 | result = UUID.Random(); | ||
182 | |||
183 | JsonStore map = null; | ||
181 | 184 | ||
182 | if (! m_enabled) return false; | 185 | if (! m_enabled) return false; |
183 | 186 | ||
184 | UUID uuid = UUID.Random(); | ||
185 | JsonStore map = null; | ||
186 | 187 | ||
187 | try | 188 | try |
188 | { | 189 | { |
@@ -195,9 +196,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore | |||
195 | } | 196 | } |
196 | 197 | ||
197 | lock (m_JsonValueStore) | 198 | lock (m_JsonValueStore) |
198 | m_JsonValueStore.Add(uuid,map); | 199 | m_JsonValueStore.Add(result,map); |
199 | 200 | ||
200 | result = uuid; | ||
201 | return true; | 201 | return true; |
202 | } | 202 | } |
203 | 203 | ||
@@ -231,7 +231,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore | |||
231 | if (! m_JsonValueStore.TryGetValue(storeID,out map)) | 231 | if (! m_JsonValueStore.TryGetValue(storeID,out map)) |
232 | { | 232 | { |
233 | m_log.InfoFormat("[JsonStore] Missing store {0}",storeID); | 233 | m_log.InfoFormat("[JsonStore] Missing store {0}",storeID); |
234 | return true; | 234 | return false; |
235 | } | 235 | } |
236 | } | 236 | } |
237 | 237 | ||
diff --git a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs index eaba816..6910d14 100644 --- a/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/JsonStore/JsonStoreScriptModule.cs | |||
@@ -227,7 +227,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore | |||
227 | protected UUID JsonCreateStore(UUID hostID, UUID scriptID, string value) | 227 | protected UUID JsonCreateStore(UUID hostID, UUID scriptID, string value) |
228 | { | 228 | { |
229 | UUID uuid = UUID.Zero; | 229 | UUID uuid = UUID.Zero; |
230 | if (! m_store.CreateStore(value, out uuid)) | 230 | if (! m_store.CreateStore(value, ref uuid)) |
231 | GenerateRuntimeError("Failed to create Json store"); | 231 | GenerateRuntimeError("Failed to create Json store"); |
232 | 232 | ||
233 | return uuid; | 233 | return uuid; |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs index cde2d9f..6809c09 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs | |||
@@ -254,7 +254,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
254 | 254 | ||
255 | object[] convertedParms = new object[parms.Length]; | 255 | object[] convertedParms = new object[parms.Length]; |
256 | for (int i = 0; i < parms.Length; i++) | 256 | for (int i = 0; i < parms.Length; i++) |
257 | convertedParms[i] = ConvertFromLSL(parms[i],signature[i]); | 257 | convertedParms[i] = ConvertFromLSL(parms[i],signature[i], fname); |
258 | 258 | ||
259 | // now call the function, the contract with the function is that it will always return | 259 | // now call the function, the contract with the function is that it will always return |
260 | // non-null but don't trust it completely | 260 | // non-null but don't trust it completely |
@@ -294,7 +294,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
294 | 294 | ||
295 | /// <summary> | 295 | /// <summary> |
296 | /// </summary> | 296 | /// </summary> |
297 | protected object ConvertFromLSL(object lslparm, Type type) | 297 | protected object ConvertFromLSL(object lslparm, Type type, string fname) |
298 | { | 298 | { |
299 | // ---------- String ---------- | 299 | // ---------- String ---------- |
300 | if (lslparm is LSL_String) | 300 | if (lslparm is LSL_String) |
@@ -374,14 +374,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
374 | (LSL_Vector)plist[i]); | 374 | (LSL_Vector)plist[i]); |
375 | } | 375 | } |
376 | else | 376 | else |
377 | MODError("unknown LSL list element type"); | 377 | MODError(String.Format("{0}: unknown LSL list element type", fname)); |
378 | } | 378 | } |
379 | 379 | ||
380 | return result; | 380 | return result; |
381 | } | 381 | } |
382 | } | 382 | } |
383 | 383 | ||
384 | MODError(String.Format("parameter type mismatch; expecting {0}",type.Name)); | 384 | MODError(String.Format("{1}: parameter type mismatch; expecting {0}",type.Name, fname)); |
385 | return null; | 385 | return null; |
386 | } | 386 | } |
387 | 387 | ||