17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-05 05:14:27 +01:00

fix(editor): guard the places where the editor could crash outright

Found with an address and undefined behaviour sanitizer build, random
monkey sessions on the test sceneries and broken inputs:

- A deleted model left its pointer in the pick list of the renderer, the
  bound node of the panels, the bindings of the infrastructure and the
  selection: the next pick or panel frame read freed memory. The renderer
  forgets it, and one erase_model does the cleaning for all the places
  which deleted a model by hand.
- The plan band of a route read the vertex before the first one in the
  frame a drag was let go.
- A scenery which can't be opened goes back to the launcher with the
  reason in the log, a track of an unknown type or a tributary loads as
  a normal track or a river with a message, and a spline with no finite
  length or step gets a sane number of segments.
- Typed numbers which aren't (NaN, inf, ends 0 m or 1000 km apart, a
  vector of 1e30, a diverging track part of 5 km, a curve threshold of 0,
  a zero history size, radius norms below zero) are refused or clamped,
  where they made the geometry run away or divide by zero.
- Folders which can't be read and file names which aren't valid in the
  locale no longer throw out of the scans of sceneries, textures, sweeps,
  roads and signal plates; the scans skip them.
- The launcher: Ctrl+Del with no trainset selected, a dropped vehicle
  whose skin is gone and a text with a percent sign.
- A terrain mesh made for another resolution of its chunk isn't put into
  the chunk, and a slot is reused only for a mesh of the same size.
- Vehicles on a track changed by the editor are moved over a copy of the
  list they leave.
- The table of the keyboard shortcuts gives its stretched column a
  weight, else ImGui divides 0 by 0 in the first frame of the window.
This commit is contained in:
maj00r
2026-10-21 08:42:29 +02:00
parent 9696b5f795
commit 4512ed4e0b
36 changed files with 311 additions and 111 deletions

View File

@@ -5118,6 +5118,9 @@ msgstr "Tor zwrotny nie ma części"
msgid "A part of the diverging track is shorter than 5 cm"
msgstr "Część toru zwrotnego jest krótsza niż 5 cm"
msgid "A part of the diverging track is longer than 1000 m"
msgstr "Część toru zwrotnego jest dłuższa niż 1000 m"
msgid "A radius of the diverging track is under 10 m"
msgstr "Promień toru zwrotnego jest mniejszy niż 10 m"
@@ -9949,3 +9952,6 @@ msgstr "Dobudowuj teren przy układaniu"
msgid "Where a track is laid past the edge of the terrain, the terrain model is made around the cursor as it goes"
msgstr "Gdy tor wychodzi poza teren, NMT dobudowuje się wokół kursora na bieżąco"
msgid "The ends have to be numbers, from 0.1 m to 100 km apart"
msgstr "Końce muszą być liczbami, od 0,1 m do 100 km od siebie"