summaryrefslogtreecommitdiff
path: root/src/fltk-text_buffers.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/fltk-text_buffers.adb')
-rw-r--r--src/fltk-text_buffers.adb78
1 files changed, 60 insertions, 18 deletions
diff --git a/src/fltk-text_buffers.adb b/src/fltk-text_buffers.adb
index 92e4922..5fec63b 100644
--- a/src/fltk-text_buffers.adb
+++ b/src/fltk-text_buffers.adb
@@ -767,10 +767,17 @@ package body FLTK.Text_Buffers is
is
Raw : Interfaces.C.Strings.chars_ptr :=
fl_text_buffer_get_text (This.Void_Ptr);
- Ada_String : String := Interfaces.C.Strings.Value (Raw);
begin
- Interfaces.C.Strings.Free (Raw);
- return Ada_String;
+ if Raw = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ Ada_String : String := Interfaces.C.Strings.Value (Raw);
+ begin
+ Interfaces.C.Strings.Free (Raw);
+ return Ada_String;
+ end;
+ end if;
end Get_Entire_Text;
@@ -812,10 +819,17 @@ package body FLTK.Text_Buffers is
(This.Void_Ptr,
Interfaces.C.int (Start),
Interfaces.C.int (Finish));
- The_Text : String := Interfaces.C.Strings.Value (C_Str);
begin
- Interfaces.C.Strings.Free (C_Str);
- return The_Text;
+ if C_Str = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ The_Text : String := Interfaces.C.Strings.Value (C_Str);
+ begin
+ Interfaces.C.Strings.Free (C_Str);
+ return The_Text;
+ end;
+ end if;
end Text_At;
@@ -961,10 +975,17 @@ package body FLTK.Text_Buffers is
is
Raw : Interfaces.C.Strings.chars_ptr :=
fl_text_buffer_selection_text (This.Void_Ptr);
- Ada_String : String := Interfaces.C.Strings.Value (Raw);
begin
- Interfaces.C.Strings.Free (Raw);
- return Ada_String;
+ if Raw = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ Ada_String : String := Interfaces.C.Strings.Value (Raw);
+ begin
+ Interfaces.C.Strings.Free (Raw);
+ return Ada_String;
+ end;
+ end if;
end Selection_Text;
@@ -974,10 +995,17 @@ package body FLTK.Text_Buffers is
is
Raw : Interfaces.C.Strings.chars_ptr :=
fl_text_buffer_secondary_selection_text (This.Void_Ptr);
- Ada_String : String := Interfaces.C.Strings.Value (Raw);
begin
- Interfaces.C.Strings.Free (Raw);
- return Ada_String;
+ if Raw = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ Ada_String : String := Interfaces.C.Strings.Value (Raw);
+ begin
+ Interfaces.C.Strings.Free (Raw);
+ return Ada_String;
+ end;
+ end if;
end Secondary_Selection_Text;
@@ -1055,10 +1083,17 @@ package body FLTK.Text_Buffers is
is
Raw : Interfaces.C.Strings.chars_ptr :=
fl_text_buffer_highlight_text (This.Void_Ptr);
- Ada_String : String := Interfaces.C.Strings.Value (Raw);
begin
- Interfaces.C.Strings.Free (Raw);
- return Ada_String;
+ if Raw = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ Ada_String : String := Interfaces.C.Strings.Value (Raw);
+ begin
+ Interfaces.C.Strings.Free (Raw);
+ return Ada_String;
+ end;
+ end if;
end Get_Highlighted_Text;
@@ -1181,10 +1216,17 @@ package body FLTK.Text_Buffers is
Raw : Interfaces.C.Strings.chars_ptr := fl_text_buffer_line_text
(This.Void_Ptr,
Interfaces.C.int (Place));
- Ada_String : String := Interfaces.C.Strings.Value (Raw);
begin
- Interfaces.C.Strings.Free (Raw);
- return Ada_String;
+ if Raw = Interfaces.C.Strings.Null_Ptr then
+ return "";
+ else
+ declare
+ Ada_String : String := Interfaces.C.Strings.Value (Raw);
+ begin
+ Interfaces.C.Strings.Free (Raw);
+ return Ada_String;
+ end;
+ end if;
end Line_Text;