From 94d7646bdcdb0389c754fd83c04a5c2e12a60299 Mon Sep 17 00:00:00 2001 From: Christopher Milan Date: Sun, 7 Dec 2025 09:56:38 -0800 Subject: [PATCH] fix anonymous struct fields (#13610) --- test/unit/test_autogen.py | 2 -- tinygrad/runtime/support/c.py | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test/unit/test_autogen.py b/test/unit/test_autogen.py index dc1749fa18..c04611cc54 100644 --- a/test/unit/test_autogen.py +++ b/test/unit/test_autogen.py @@ -110,8 +110,6 @@ class TestAutogen(unittest.TestCase): assert frts_cmd.readVbiosDesc.__class__ is FWSECLIC_READ_VBIOS_DESC assert frts_cmd.frtsRegionDesc.__class__ is FWSECLIC_FRTS_REGION_DESC - @unittest.skip("fails") - @unittest.skipIf(WIN, "doesn't compile on windows") def test_packed_fields(self): uint8_t = ctypes.c_ubyte uint16_t = ctypes.c_ushort diff --git a/tinygrad/runtime/support/c.py b/tinygrad/runtime/support/c.py index 95f78c4ce3..d9e885d561 100644 --- a/tinygrad/runtime/support/c.py +++ b/tinygrad/runtime/support/c.py @@ -77,7 +77,8 @@ else: if hasattr(cls, '_anonymous_'): for anm, aty in [(a, get_aty(a)) for a in cls._anonymous_]: for fnm in (get_fnms(aty) + flatten([get_fnms(get_aty(aanm, pget(aty, 'fields'))) for aanm in pget(aty, 'anonymous')])): - setattr(cls, fnm, property(lambda self: getattr(getattr(self, anm), fnm), lambda self, v: setattr(getattr(self, anm), fnm, v))) + setattr(cls, fnm, property(functools.partial(lambda self, anm, fnm: getattr(getattr(self, anm), fnm), anm=anm, fnm=fnm), + functools.partial(lambda self, v, anm, fnm: setattr(getattr(self, anm), fnm, v), anm=anm, fnm=fnm))) setattr(cls, '_packed_anonymous_', cls._anonymous_) setattr(cls, '_anonymous_', []) type(ctypes.Structure).__setattr__(cls, '_fields_', [('_data', ctypes.c_ubyte * ((offset + 7) // 8))])