mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-08-04 01:02:27 -04:00
The C++ SharedData struct is naturally aligned, not packed, so the compiler inserts a 4-byte pad before capture_fps (after state) and another before the startup_time union (after audio_channels). Monitor.php used the naive packed offsets, so every field from capture_fps onward (capture_fps/analysis_fps, latitude/longitude, the time fields, alarm_cause and all of TriggerData) was read from an address 4-8 bytes too low, yielding garbage. Correct the offsets to the real aligned layout (SharedData is 872 bytes, TriggerData starts at 872), matching what ZoneMinder::Memory computes and what the C++ writes. No struct change; this is a reader-side fix. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Modern ZoneMinder Skin
This web frontend to ZoneMinder is a complete rewrite of the classic frontend, based on CakePHP.