diff options
author | Jedidiah Barber <contact@jedbarber.id.au> | 2025-04-10 13:52:17 +1200 |
---|---|---|
committer | Jedidiah Barber <contact@jedbarber.id.au> | 2025-04-10 13:52:17 +1200 |
commit | 97df98beefa9cc088a5b68899dd90baf67d175c5 (patch) | |
tree | d9754bb8274c04d9b351296a09bd00c5685c5ec3 | |
parent | 8e59d5aa80705a03ad39d925c1c2ca0523d964a8 (diff) |
Addresses of first element of null arrays are now null pointers
-rw-r--r-- | body/fltk-draw.adb | 17 | ||||
-rw-r--r-- | body/fltk-images-rgb-jpeg.adb | 4 | ||||
-rw-r--r-- | body/fltk-images-rgb-png.adb | 4 | ||||
-rw-r--r-- | body/fltk-widgets-groups-text_displays.adb | 8 | ||||
-rw-r--r-- | body/fltk-widgets-groups-windows.adb | 8 | ||||
-rw-r--r-- | body/fltk-widgets-menus.adb | 3 |
6 files changed, 33 insertions, 11 deletions
diff --git a/body/fltk-draw.adb b/body/fltk-draw.adb index c99d5cd..92b3ebc 100644 --- a/body/fltk-draw.adb +++ b/body/fltk-draw.adb @@ -1024,7 +1024,9 @@ package body FLTK.Draw is end if; end if; fl_draw_draw_image - (Storage.To_Integer (Data (Data'First)'Address), + ((if Data'Length > 0 + then Storage.To_Integer (Data (Data'First)'Address) + else Null_Pointer), Interfaces.C.int (X), Interfaces.C.int (Y), Interfaces.C.int (W), @@ -1093,7 +1095,9 @@ package body FLTK.Draw is end if; end if; fl_draw_draw_image_mono - (Storage.To_Integer (Data (Data'First)'Address), + ((if Data'Length > 0 + then Storage.To_Integer (Data (Data'First)'Address) + else Null_Pointer), Interfaces.C.int (X), Interfaces.C.int (Y), Interfaces.C.int (W), @@ -1174,13 +1178,18 @@ package body FLTK.Draw is Buffer : Storage.Integer_Address; begin Buffer := fl_draw_read_image - (Storage.To_Integer (Result (Result'First)'Address), + ((if Result'Length > 0 + then Storage.To_Integer (Result (Result'First)'Address) + else Null_Pointer), Interfaces.C.int (X), Interfaces.C.int (Y), Interfaces.C.int (W), Interfaces.C.int (H), Interfaces.C.int (Alpha)); - pragma Assert (Buffer = Storage.To_Integer (Result (Result'First)'Address)); + pragma Assert + ((if Result'Length > 0 + then Buffer = Storage.To_Integer (Result (Result'First)'Address) + else Buffer = Null_Pointer)); return Result; exception when Chk.Assertion_Error => raise Internal_FLTK_Error with diff --git a/body/fltk-images-rgb-jpeg.adb b/body/fltk-images-rgb-jpeg.adb index 8706778..61d06e6 100644 --- a/body/fltk-images-rgb-jpeg.adb +++ b/body/fltk-images-rgb-jpeg.adb @@ -81,7 +81,9 @@ package body FLTK.Images.RGB.JPEG is return This : JPEG_Image do This.Void_Ptr := new_fl_jpeg_image2 (Interfaces.C.To_C (Name), - Storage.To_Integer (Data (Data'First)'Address)); + (if Data'Length > 0 + then Storage.To_Integer (Data (Data'First)'Address) + else Null_Pointer)); Raise_Fail_Errors (This); end return; end Create; diff --git a/body/fltk-images-rgb-png.adb b/body/fltk-images-rgb-png.adb index aa25b7b..1f6e7b9 100644 --- a/body/fltk-images-rgb-png.adb +++ b/body/fltk-images-rgb-png.adb @@ -82,7 +82,9 @@ package body FLTK.Images.RGB.PNG is return This : PNG_Image do This.Void_Ptr := new_fl_png_image2 (Interfaces.C.To_C (Name), - Storage.To_Integer (Data (Data'First)'Address), + (if Data'Length > 0 + then Storage.To_Integer (Data (Data'First)'Address) + else Null_Pointer), Data'Length); Raise_Fail_Errors (This); end return; diff --git a/body/fltk-widgets-groups-text_displays.adb b/body/fltk-widgets-groups-text_displays.adb index 0b70bf6..ac1f6e9 100644 --- a/body/fltk-widgets-groups-text_displays.adb +++ b/body/fltk-widgets-groups-text_displays.adb @@ -1009,7 +1009,9 @@ package body FLTK.Widgets.Groups.Text_Displays is fl_text_display_highlight_data (This.Void_Ptr, Wrapper (Buff).Void_Ptr, - Storage.To_Integer (Table (Table'First)'Address), + (if Table'Length > 0 + then Storage.To_Integer (Table (Table'First)'Address) + else Null_Pointer), Table'Length); end Highlight_Data; @@ -1025,7 +1027,9 @@ package body FLTK.Widgets.Groups.Text_Displays is fl_text_display_highlight_data2 (This.Void_Ptr, Wrapper (Buff).Void_Ptr, - Storage.To_Integer (Table (Table'First)'Address), + (if Table'Length > 0 + then Storage.To_Integer (Table (Table'First)'Address) + else Null_Pointer), Table'Length, Interfaces.C.To_C (Unfinished), Storage.To_Integer (Style_Hook'Address), diff --git a/body/fltk-widgets-groups-windows.adb b/body/fltk-widgets-groups-windows.adb index 4d73499..55f3506 100644 --- a/body/fltk-widgets-groups-windows.adb +++ b/body/fltk-widgets-groups-windows.adb @@ -636,7 +636,9 @@ package body FLTK.Widgets.Groups.Windows is end loop; fl_window_icons (This.Void_Ptr, - Storage.To_Integer (Pointers (Pointers'First)'Address), + (if Pointers'Length > 0 + then Storage.To_Integer (Pointers (Pointers'First)'Address) + else Null_Pointer), Pointers'Length); end Set_Icons; @@ -664,7 +666,9 @@ package body FLTK.Widgets.Groups.Windows is Pointers (Index) := Wrapper (Pics (Index)).Void_Ptr; end loop; fl_window_default_icons - (Storage.To_Integer (Pointers (Pointers'First)'Address), + ((if Pointers'Length > 0 + then Storage.To_Integer (Pointers (Pointers'First)'Address) + else Null_Pointer), Pointers'Length); end Set_Default_Icons; diff --git a/body/fltk-widgets-menus.adb b/body/fltk-widgets-menus.adb index 2837921..1295d76 100644 --- a/body/fltk-widgets-menus.adb +++ b/body/fltk-widgets-menus.adb @@ -751,7 +751,8 @@ package body FLTK.Widgets.Menus is (This : in out Menu; Items : in FLTK.Menu_Items.Menu_Item_Array) is - Pointers : aliased array (Items'First .. Items'Last + 1) of Storage.Integer_Address; + Pointers : aliased array + (Items'First .. Integer'Max (Items'First, Items'Last + 1)) of Storage.Integer_Address; pragma Convention (C, Pointers); begin for Place in Pointers'First .. Pointers'Last - 1 loop |