Fix a kernel crash on a CD, with 512MB RAM

CDDataBuf was considered a free memory. It was then allocated for other
kernel structures what eventually caused the crash.

The bug report: https://www.youtube.com/watch?v=tXMD9_gEUcA
This commit is contained in:
2025-02-09 19:32:30 +00:00
parent 84bc176353
commit 17eebff188
2 changed files with 24 additions and 26 deletions

View File

@@ -596,29 +596,29 @@ CONTROL_EXCEPTION = 'EXPT'
; Window structure: ; Window structure:
struct WDATA struct WDATA
box BOX box BOX ; +0
cl_workarea dd ? cl_workarea dd ? ; +16
cl_titlebar dd ? cl_titlebar dd ? ; +20
cl_frames dd ? cl_frames dd ? ; +24
z_modif db ? z_modif db ? ; +28
fl_wstate db ? fl_wstate db ? ; +29
fl_wdrawn db ? fl_wdrawn db ? ; +30
fl_redraw db ? fl_redraw db ? ; +31
clientbox BOX clientbox BOX ; +32
shape dd ? shape dd ? ; +48
shape_scale dd ? shape_scale dd ? ; +52
caption dd ? caption dd ? ; +56
captionEncoding db ? captionEncoding db ? ; +60
rb 3 rb 3 ; +61
saved_box BOX saved_box BOX ; +64
cursor dd ? cursor dd ? ; +80
temp_cursor dd ? ;? temp_cursor dd ? ; +84 ?
draw_bgr_x dd ? draw_bgr_x dd ? ; +88
draw_bgr_y dd ? draw_bgr_y dd ? ; +92
draw_data RECT draw_data RECT ; +96
thread dd ? ; ptr APPDATA thread dd ? ; +112 ptr APPDATA
buttons rd 1 ; ptr array buttons buttons rd 1 ; +116 ptr array buttons
rb 12 - 4 rb 12 - 4 ; +120
ends ends
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3 label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3

View File

@@ -531,6 +531,7 @@ CLEAN_ZONE = _CLEAN_ZONE - OS_BASE
BgrAuxTable rb 32768 BgrAuxTable rb 32768
align 65536 align 65536
SB16Buffer rb 65536 SB16Buffer rb 65536
CDDataBuf: rb 0x1000
align 4096 align 4096
BUTTON_INFO rb 64*1024 BUTTON_INFO rb 64*1024
@@ -538,6 +539,3 @@ RESERVED_PORTS:
rb 64*1024 rb 64*1024
sys_pgmap: sys_pgmap:
rb 1024*1024/8 rb 1024*1024/8
CDDataBuf: rb 0x1000