diff options
Diffstat (limited to 'OpenSim/Tools')
-rw-r--r-- | OpenSim/Tools/Compiler/Program.cs | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/OpenSim/Tools/Compiler/Program.cs b/OpenSim/Tools/Compiler/Program.cs index 6c59c31..b9c960b 100644 --- a/OpenSim/Tools/Compiler/Program.cs +++ b/OpenSim/Tools/Compiler/Program.cs | |||
@@ -255,12 +255,13 @@ namespace OpenSim.Tools.LSL.Compiler | |||
255 | return FindErrorPosition(line, col, null); | 255 | return FindErrorPosition(line, col, null); |
256 | } | 256 | } |
257 | 257 | ||
258 | private class kvpSorter : IComparer<KeyValuePair<int,int>> | 258 | private class kvpSorter : IComparer<KeyValuePair<int, int>> |
259 | { | 259 | { |
260 | public int Compare(KeyValuePair<int,int> a, | 260 | public int Compare(KeyValuePair<int, int> a, |
261 | KeyValuePair<int,int> b) | 261 | KeyValuePair<int, int> b) |
262 | { | 262 | { |
263 | return a.Key.CompareTo(b.Key); | 263 | int kc = a.Key.CompareTo(b.Key); |
264 | return (kc != 0) ? kc : a.Value.CompareTo(b.Value); | ||
264 | } | 265 | } |
265 | } | 266 | } |
266 | 267 | ||
@@ -277,32 +278,24 @@ namespace OpenSim.Tools.LSL.Compiler | |||
277 | out ret)) | 278 | out ret)) |
278 | return ret; | 279 | return ret; |
279 | 280 | ||
280 | List<KeyValuePair<int,int>> sorted = | 281 | List<KeyValuePair<int, int>> sorted = |
281 | new List<KeyValuePair<int,int>>(positionMap.Keys); | 282 | new List<KeyValuePair<int, int>>(positionMap.Keys); |
282 | 283 | ||
283 | sorted.Sort(new kvpSorter()); | 284 | sorted.Sort(new kvpSorter()); |
284 | 285 | ||
285 | int l = 1; | 286 | int l = sorted[0].Key; |
286 | int c = 1; | 287 | int c = sorted[0].Value; |
287 | 288 | ||
288 | foreach (KeyValuePair<int, int> cspos in sorted) | 289 | foreach (KeyValuePair<int, int> cspos in sorted) |
289 | { | 290 | { |
290 | if (cspos.Key >= line) | 291 | if (cspos.Key >= line && |
291 | { | 292 | !(cspos.Key == line && cspos.Value <= col)) |
292 | if (cspos.Key > line) | 293 | break; |
293 | return new KeyValuePair<int, int>(l, c); | 294 | l = cspos.Key; |
294 | if (cspos.Value > col) | 295 | c = cspos.Value; |
295 | return new KeyValuePair<int, int>(l, c); | ||
296 | c = cspos.Value; | ||
297 | if (c == 0) | ||
298 | c++; | ||
299 | } | ||
300 | else | ||
301 | { | ||
302 | l = cspos.Key; | ||
303 | } | ||
304 | } | 296 | } |
305 | return new KeyValuePair<int, int>(l, c); | 297 | positionMap.TryGetValue(new KeyValuePair<int, int>(l, c), out ret); |
298 | return ret; | ||
306 | } | 299 | } |
307 | } | 300 | } |
308 | } | 301 | } |