summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2017-05-10 20:07:16 +1000
committerJed Barber <jjbarber@y7mail.com>2017-05-10 20:07:16 +1000
commit703c2e726a75cbedb43d3105f9e0b2bab9e59e77 (patch)
treee62b5012c27d295e590bef9a7cac89bb08ee026d
parent9dcf299b63268278b0a9a27ed2dc600f19e458b2 (diff)
Fixed Finalize inheritance bug
-rw-r--r--src/fltk-images-rgb-png.adb11
-rw-r--r--src/fltk-images.adb11
-rw-r--r--src/fltk-text_buffers.adb9
-rw-r--r--src/fltk-widgets-boxes.adb5
-rw-r--r--src/fltk-widgets-buttons-enter.adb5
-rw-r--r--src/fltk-widgets-buttons-light-check.adb5
-rw-r--r--src/fltk-widgets-buttons-light-radio.adb5
-rw-r--r--src/fltk-widgets-buttons-light-round-radio.adb5
-rw-r--r--src/fltk-widgets-buttons-light-round.adb5
-rw-r--r--src/fltk-widgets-buttons-light.adb5
-rw-r--r--src/fltk-widgets-buttons-radio.adb5
-rw-r--r--src/fltk-widgets-buttons-repeat.adb5
-rw-r--r--src/fltk-widgets-buttons-toggle.adb5
-rw-r--r--src/fltk-widgets-buttons.adb5
-rw-r--r--src/fltk-widgets-groups-text_displays-text_editors.adb5
-rw-r--r--src/fltk-widgets-groups-text_displays.adb5
-rw-r--r--src/fltk-widgets-groups-windows-double.adb5
-rw-r--r--src/fltk-widgets-groups-windows-single-menu.adb5
-rw-r--r--src/fltk-widgets-groups-windows-single.adb5
-rw-r--r--src/fltk-widgets-groups-windows.adb5
-rw-r--r--src/fltk-widgets-groups.adb5
-rw-r--r--src/fltk-widgets-inputs-file.adb5
-rw-r--r--src/fltk-widgets-inputs-float.adb5
-rw-r--r--src/fltk-widgets-inputs-integer.adb5
-rw-r--r--src/fltk-widgets-inputs-multiline.adb5
-rw-r--r--src/fltk-widgets-inputs-outputs.adb5
-rw-r--r--src/fltk-widgets-inputs-secret.adb5
-rw-r--r--src/fltk-widgets-inputs.adb5
-rw-r--r--src/fltk-widgets-menus-menu_bars.adb5
-rw-r--r--src/fltk-widgets-menus-menu_buttons.adb5
-rw-r--r--src/fltk-widgets-menus.adb5
-rw-r--r--src/fltk-widgets.adb5
32 files changed, 104 insertions, 72 deletions
diff --git a/src/fltk-images-rgb-png.adb b/src/fltk-images-rgb-png.adb
index ecb2f5e..f6d9870 100644
--- a/src/fltk-images-rgb-png.adb
+++ b/src/fltk-images-rgb-png.adb
@@ -23,12 +23,13 @@ package body FLTK.Images.RGB.PNG is
overriding procedure Finalize
(This : in out PNG_Image) is
begin
- Finalize (RGB_Image (This));
- if This.Void_Ptr /= System.Null_Address then
- if This in PNG_Image then
- free_fl_png_image (This.Void_Ptr);
- end if;
+ if This.Void_Ptr /= System.Null_Address and then
+ This in PNG_Image'Class
+ then
+ free_fl_png_image (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
+ Finalize (RGB_Image (This));
end Finalize;
diff --git a/src/fltk-images.adb b/src/fltk-images.adb
index bbd87c9..d719e9c 100644
--- a/src/fltk-images.adb
+++ b/src/fltk-images.adb
@@ -38,12 +38,13 @@ package body FLTK.Images is
overriding procedure Finalize
(This : in out Image) is
begin
- Finalize (Wrapper (This));
- if This.Void_Ptr /= System.Null_Address then
- if This in Image then
- free_fl_image (This.Void_Ptr);
- end if;
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Image'Class
+ then
+ free_fl_image (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
+ Finalize (Wrapper (This));
end Finalize;
diff --git a/src/fltk-text_buffers.adb b/src/fltk-text_buffers.adb
index 52f12e0..086ec03 100644
--- a/src/fltk-text_buffers.adb
+++ b/src/fltk-text_buffers.adb
@@ -138,10 +138,11 @@ package body FLTK.Text_Buffers is
procedure Finalize
(This : in out Text_Buffer) is
begin
- if This.Void_Ptr /= System.Null_Address then
- if This in Text_Buffer then
- free_fl_text_buffer (This.Void_Ptr);
- end if;
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Text_Buffer'Class
+ then
+ free_fl_text_buffer (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
end Finalize;
diff --git a/src/fltk-widgets-boxes.adb b/src/fltk-widgets-boxes.adb
index 1c8fa5b..ed61168 100644
--- a/src/fltk-widgets-boxes.adb
+++ b/src/fltk-widgets-boxes.adb
@@ -58,10 +58,11 @@ package body FLTK.Widgets.Boxes is
procedure Finalize
(This : in out Box) is
begin
- if This in Box and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Box'Class
then
free_fl_box (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Widget (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-enter.adb b/src/fltk-widgets-buttons-enter.adb
index d9575ca..6d8e796 100644
--- a/src/fltk-widgets-buttons-enter.adb
+++ b/src/fltk-widgets-buttons-enter.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Enter is
procedure Finalize
(This : in out Enter_Button) is
begin
- if This in Enter_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Enter_Button'Class
then
free_fl_return_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-light-check.adb b/src/fltk-widgets-buttons-light-check.adb
index c906a6c..4a1bcdb 100644
--- a/src/fltk-widgets-buttons-light-check.adb
+++ b/src/fltk-widgets-buttons-light-check.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Light.Check is
procedure Finalize
(This : in out Check_Button) is
begin
- if This in Check_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Check_Button'Class
then
free_fl_check_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Light_Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-light-radio.adb b/src/fltk-widgets-buttons-light-radio.adb
index c04d628..11c2b35 100644
--- a/src/fltk-widgets-buttons-light-radio.adb
+++ b/src/fltk-widgets-buttons-light-radio.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Light.Radio is
procedure Finalize
(This : in out Radio_Light_Button) is
begin
- if This in Radio_Light_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Radio_Light_Button'Class
then
free_fl_radio_light_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Light_Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-light-round-radio.adb b/src/fltk-widgets-buttons-light-round-radio.adb
index 8c95122..1e9b854 100644
--- a/src/fltk-widgets-buttons-light-round-radio.adb
+++ b/src/fltk-widgets-buttons-light-round-radio.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Light.Round.Radio is
procedure Finalize
(This : in out Radio_Round_Button) is
begin
- if This in Radio_Round_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Radio_Round_Button'Class
then
free_fl_radio_round_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Round_Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-light-round.adb b/src/fltk-widgets-buttons-light-round.adb
index 769f556..6e66b2c 100644
--- a/src/fltk-widgets-buttons-light-round.adb
+++ b/src/fltk-widgets-buttons-light-round.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Light.Round is
procedure Finalize
(This : in out Round_Button) is
begin
- if This in Round_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Round_Button'Class
then
free_fl_round_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Light_Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-light.adb b/src/fltk-widgets-buttons-light.adb
index e3b1cfd..77b8ee1 100644
--- a/src/fltk-widgets-buttons-light.adb
+++ b/src/fltk-widgets-buttons-light.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Light is
procedure Finalize
(This : in out Light_Button) is
begin
- if This in Light_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Light_Button'Class
then
free_fl_light_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-radio.adb b/src/fltk-widgets-buttons-radio.adb
index 2b932c3..25fedc0 100644
--- a/src/fltk-widgets-buttons-radio.adb
+++ b/src/fltk-widgets-buttons-radio.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Radio is
procedure Finalize
(This : in out Radio_Button) is
begin
- if This in Radio_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Radio_Button'Class
then
free_fl_radio_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-repeat.adb b/src/fltk-widgets-buttons-repeat.adb
index 7d0f0bd..8e7c9f3 100644
--- a/src/fltk-widgets-buttons-repeat.adb
+++ b/src/fltk-widgets-buttons-repeat.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Repeat is
procedure Finalize
(This : in out Repeat_Button) is
begin
- if This in Repeat_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Repeat_Button'Class
then
free_fl_repeat_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons-toggle.adb b/src/fltk-widgets-buttons-toggle.adb
index a228130..e03d2ab 100644
--- a/src/fltk-widgets-buttons-toggle.adb
+++ b/src/fltk-widgets-buttons-toggle.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Buttons.Toggle is
procedure Finalize
(This : in out Toggle_Button) is
begin
- if This in Toggle_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Toggle_Button'Class
then
free_fl_toggle_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Button (This));
end Finalize;
diff --git a/src/fltk-widgets-buttons.adb b/src/fltk-widgets-buttons.adb
index 4eb2ffb..bdc4810 100644
--- a/src/fltk-widgets-buttons.adb
+++ b/src/fltk-widgets-buttons.adb
@@ -72,10 +72,11 @@ package body FLTK.Widgets.Buttons is
procedure Finalize
(This : in out Button) is
begin
- if This in Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Button'Class
then
free_fl_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Widget (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-text_displays-text_editors.adb b/src/fltk-widgets-groups-text_displays-text_editors.adb
index 2424a7e..06564ef 100644
--- a/src/fltk-widgets-groups-text_displays-text_editors.adb
+++ b/src/fltk-widgets-groups-text_displays-text_editors.adb
@@ -85,11 +85,12 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is
procedure Finalize
(This : in out Text_Editor) is
begin
- if This in Text_Editor and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Text_Editor'Class
then
This.Clear;
free_fl_text_editor (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Text_Display (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-text_displays.adb b/src/fltk-widgets-groups-text_displays.adb
index d8c58d0..9c571d3 100644
--- a/src/fltk-widgets-groups-text_displays.adb
+++ b/src/fltk-widgets-groups-text_displays.adb
@@ -143,11 +143,12 @@ package body FLTK.Widgets.Groups.Text_Displays is
procedure Finalize
(This : in out Text_Display) is
begin
- if This in Text_Display and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Text_Display'Class
then
This.Clear;
free_fl_text_display (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Group (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-windows-double.adb b/src/fltk-widgets-groups-windows-double.adb
index fc1c4dd..da48471 100644
--- a/src/fltk-widgets-groups-windows-double.adb
+++ b/src/fltk-widgets-groups-windows-double.adb
@@ -72,11 +72,12 @@ package body FLTK.Widgets.Groups.Windows.Double is
procedure Finalize
(This : in out Double_Window) is
begin
- if This in Double_Window and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Double_Window'Class
then
This.Clear;
free_fl_double_window (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Window (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-windows-single-menu.adb b/src/fltk-widgets-groups-windows-single-menu.adb
index 08e74e2..4f62763 100644
--- a/src/fltk-widgets-groups-windows-single-menu.adb
+++ b/src/fltk-widgets-groups-windows-single-menu.adb
@@ -90,11 +90,12 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is
procedure Finalize
(This : in out Menu_Window) is
begin
- if This in Menu_Window and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Menu_Window'Class
then
This.Clear;
free_fl_menu_window (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Single_Window (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-windows-single.adb b/src/fltk-widgets-groups-windows-single.adb
index ea7590c..bc89b10 100644
--- a/src/fltk-widgets-groups-windows-single.adb
+++ b/src/fltk-widgets-groups-windows-single.adb
@@ -72,11 +72,12 @@ package body FLTK.Widgets.Groups.Windows.Single is
procedure Finalize
(This : in out Single_Window) is
begin
- if This in Single_Window and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Single_Window'Class
then
This.Clear;
free_fl_single_window (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Window (This));
end Finalize;
diff --git a/src/fltk-widgets-groups-windows.adb b/src/fltk-widgets-groups-windows.adb
index 54b29c4..866d502 100644
--- a/src/fltk-widgets-groups-windows.adb
+++ b/src/fltk-widgets-groups-windows.adb
@@ -94,11 +94,12 @@ package body FLTK.Widgets.Groups.Windows is
procedure Finalize
(This : in out Window) is
begin
- if This in Window and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Window'Class
then
This.Clear;
free_fl_window (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Group (This));
end Finalize;
diff --git a/src/fltk-widgets-groups.adb b/src/fltk-widgets-groups.adb
index 669e2a8..3b82d03 100644
--- a/src/fltk-widgets-groups.adb
+++ b/src/fltk-widgets-groups.adb
@@ -96,11 +96,12 @@ package body FLTK.Widgets.Groups is
procedure Finalize
(This : in out Group) is
begin
- if This in Group and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Group'Class
then
This.Clear;
free_fl_group (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Widget (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-file.adb b/src/fltk-widgets-inputs-file.adb
index 451232c..6ee0e84 100644
--- a/src/fltk-widgets-inputs-file.adb
+++ b/src/fltk-widgets-inputs-file.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.File is
procedure Finalize
(This : in out File_Input) is
begin
- if This in File_Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in File_Input'Class
then
free_fl_file_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-float.adb b/src/fltk-widgets-inputs-float.adb
index 4769c8a..4e0b489 100644
--- a/src/fltk-widgets-inputs-float.adb
+++ b/src/fltk-widgets-inputs-float.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.Float is
procedure Finalize
(This : in out Float_Input) is
begin
- if This in Float_Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Float_Input'Class
then
free_fl_float_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-integer.adb b/src/fltk-widgets-inputs-integer.adb
index 9234f60..92e95ec 100644
--- a/src/fltk-widgets-inputs-integer.adb
+++ b/src/fltk-widgets-inputs-integer.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.Integer is
procedure Finalize
(This : in out Integer_Input) is
begin
- if This in Integer_Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Integer_Input'Class
then
free_fl_int_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-multiline.adb b/src/fltk-widgets-inputs-multiline.adb
index 5b76868..a24a8f0 100644
--- a/src/fltk-widgets-inputs-multiline.adb
+++ b/src/fltk-widgets-inputs-multiline.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.Multiline is
procedure Finalize
(This : in out Multiline_Input) is
begin
- if This in Multiline_Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Multiline_Input'Class
then
free_fl_multiline_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-outputs.adb b/src/fltk-widgets-inputs-outputs.adb
index 8aa7021..6e6ff95 100644
--- a/src/fltk-widgets-inputs-outputs.adb
+++ b/src/fltk-widgets-inputs-outputs.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.Outputs is
procedure Finalize
(This : in out Output) is
begin
- if This in Output and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Output'Class
then
free_fl_output (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs-secret.adb b/src/fltk-widgets-inputs-secret.adb
index 46d0b0b..64f0c7f 100644
--- a/src/fltk-widgets-inputs-secret.adb
+++ b/src/fltk-widgets-inputs-secret.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs.Secret is
procedure Finalize
(This : in out Secret_Input) is
begin
- if This in Secret_Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Secret_Input'Class
then
free_fl_secret_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Input (This));
end Finalize;
diff --git a/src/fltk-widgets-inputs.adb b/src/fltk-widgets-inputs.adb
index 322c51e..572d11c 100644
--- a/src/fltk-widgets-inputs.adb
+++ b/src/fltk-widgets-inputs.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Inputs is
procedure Finalize
(This : in out Input) is
begin
- if This in Input and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Input'Class
then
free_fl_input (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Widget (This));
end Finalize;
diff --git a/src/fltk-widgets-menus-menu_bars.adb b/src/fltk-widgets-menus-menu_bars.adb
index 1ca0179..918ebe1 100644
--- a/src/fltk-widgets-menus-menu_bars.adb
+++ b/src/fltk-widgets-menus-menu_bars.adb
@@ -59,10 +59,11 @@ package body FLTK.Widgets.Menus.Menu_Bars is
procedure Finalize
(This : in out Menu_Bar) is
begin
- if This in Menu_Bar and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Menu_Bar'Class
then
free_fl_menu_bar (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Menu (This));
end Finalize;
diff --git a/src/fltk-widgets-menus-menu_buttons.adb b/src/fltk-widgets-menus-menu_buttons.adb
index 4fedc08..b174db8 100644
--- a/src/fltk-widgets-menus-menu_buttons.adb
+++ b/src/fltk-widgets-menus-menu_buttons.adb
@@ -64,10 +64,11 @@ package body FLTK.Widgets.Menus.Menu_Buttons is
procedure Finalize
(This : in out Menu_Button) is
begin
- if This in Menu_Button and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Menu_Button'Class
then
free_fl_menu_button (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Menu (This));
end Finalize;
diff --git a/src/fltk-widgets-menus.adb b/src/fltk-widgets-menus.adb
index 7e201b5..1605ccd 100644
--- a/src/fltk-widgets-menus.adb
+++ b/src/fltk-widgets-menus.adb
@@ -91,10 +91,11 @@ package body FLTK.Widgets.Menus is
procedure Finalize
(This : in out Menu) is
begin
- if This in Menu and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Menu'Class
then
free_fl_menu (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
Finalize (Widget (This));
end Finalize;
diff --git a/src/fltk-widgets.adb b/src/fltk-widgets.adb
index d46b1c4..458a88c 100644
--- a/src/fltk-widgets.adb
+++ b/src/fltk-widgets.adb
@@ -146,10 +146,11 @@ package body FLTK.Widgets is
procedure Finalize
(This : in out Widget) is
begin
- if This in Widget and then
- This.Void_Ptr /= System.Null_Address
+ if This.Void_Ptr /= System.Null_Address and then
+ This in Widget'Class
then
free_fl_widget (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
end if;
end Finalize;