Commit 9f6c6b5
Fix LuaShader crash when debug.getinfo is unavailable in gadget context
LuaShader:GetHandle/Delete/Activate/ActivateWith guard their "invalid
shader object" error path with `(debug and debug.getinfo(1).name)`. In
gadget (LuaRules) Lua the engine strips debug.getinfo while leaving the
debug table present, so the guard passes but debug.getinfo(1) is a nil
call -> uncaught error.
This turns a recoverable shader-compile failure into a fatal one: when a
shader fails to compile (e.g. gfx_overdrive_cables' geometry shader on a
driver lacking GL_ARB_gpu_shader5 in geometry shaders, such as older
llvmpipe), the gadget handles it gracefully via RemoveGadget, but
Shutdown -> cableShader:Finalize() then calls Delete() on a shader whose
shaderObj is nil, hitting the guard. The resulting error propagates out
of the pcall'd gadgets.lua include and aborts the ENTIRE LuaRules handle
("LuaRules is not loaded") instead of just disabling one effect.
Fix: also check that debug.getinfo exists before calling it. Applied to
all three vendored copies of LuaShader.lua.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 77e4094 commit 9f6c6b5
3 files changed
Lines changed: 12 additions & 12 deletions
File tree
- LuaRules/Gadgets/Include
- LuaUI/Widgets/Include
- modules/graphics
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
199 | | - | |
| 199 | + | |
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
| |||
205 | 205 | | |
206 | 206 | | |
207 | 207 | | |
208 | | - | |
| 208 | + | |
209 | 209 | | |
210 | 210 | | |
211 | 211 | | |
| |||
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
220 | | - | |
| 220 | + | |
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
| |||
238 | 238 | | |
239 | 239 | | |
240 | 240 | | |
241 | | - | |
| 241 | + | |
242 | 242 | | |
243 | 243 | | |
244 | 244 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
758 | 758 | | |
759 | 759 | | |
760 | 760 | | |
761 | | - | |
| 761 | + | |
762 | 762 | | |
763 | 763 | | |
764 | 764 | | |
| |||
767 | 767 | | |
768 | 768 | | |
769 | 769 | | |
770 | | - | |
| 770 | + | |
771 | 771 | | |
772 | 772 | | |
773 | 773 | | |
| |||
779 | 779 | | |
780 | 780 | | |
781 | 781 | | |
782 | | - | |
| 782 | + | |
783 | 783 | | |
784 | 784 | | |
785 | 785 | | |
| |||
800 | 800 | | |
801 | 801 | | |
802 | 802 | | |
803 | | - | |
| 803 | + | |
804 | 804 | | |
805 | 805 | | |
806 | 806 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
929 | 929 | | |
930 | 930 | | |
931 | 931 | | |
932 | | - | |
| 932 | + | |
933 | 933 | | |
934 | 934 | | |
935 | 935 | | |
| |||
938 | 938 | | |
939 | 939 | | |
940 | 940 | | |
941 | | - | |
| 941 | + | |
942 | 942 | | |
943 | 943 | | |
944 | 944 | | |
| |||
959 | 959 | | |
960 | 960 | | |
961 | 961 | | |
962 | | - | |
| 962 | + | |
963 | 963 | | |
964 | 964 | | |
965 | 965 | | |
| |||
980 | 980 | | |
981 | 981 | | |
982 | 982 | | |
983 | | - | |
| 983 | + | |
984 | 984 | | |
985 | 985 | | |
986 | 986 | | |
| |||
0 commit comments