]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
linux: improve backtrace bindings
authorEvan Nemerson <evan@nemerson.com>
Wed, 13 Aug 2014 18:11:24 +0000 (11:11 -0700)
committerEvan Nemerson <evan@nemerson.com>
Wed, 13 Aug 2014 18:15:35 +0000 (11:15 -0700)
Some minor improvements have been made to backtrace_symbols; we no
longer leak the return value and it is marked as nullable. This also
adds a Backtrace namespace for some better bindings which treat the
backtrace as an array of void* instead of just a void*.

vapi/linux.vapi

index ffa7ce461399e3c03fa5bf89825b842811cc7eb4..5cceea10e803b74a86e9fc6f512fd45f13e02e38 100644 (file)
@@ -1025,15 +1025,30 @@ namespace Linux {
         DT_WHT
     }
 
-    [CCode (cheader_filename = "execinfo.h")]
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.get"), CCode (cheader_filename = "execinfo.h")]
     public int backtrace (void* buffer, int size);
 
-    [CCode (cheader_filename = "execinfo.h", array_length = false)]
-    public unowned string[] backtrace_symbols (void* buffer, int size);
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.symbols"), CCode (cheader_filename = "execinfo.h", array_length = false)]
+    public (unowned string)[]? backtrace_symbols (void* buffer, int size);
 
-    [CCode (cheader_filename = "execinfo.h")]
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.symbols_fd"), CCode (cheader_filename = "execinfo.h")]
     public void backtrace_symbols_fd (void* buffer, int size, int fd);
 
+    namespace Backtrace {
+      [CCode (cname = "backtrace", cheader_filename = "execinfo.h")]
+      public int @get (void*[] buffer);
+      [CCode (cname = "backtrace_symbols", cheader_filename = "execinfo.h", array_length = false)]
+      private (unowned string)[]? _symbols (void*[] buffer);
+      [CCode (cname = "_vala_backtrace_symbols")]
+      public (unowned string)[]? symbols (void*[] buffer) {
+        (unowned string)[]? s = _symbols (buffer);
+        s.length = buffer.length;
+        return s;
+      }
+      [CCode (cheader_filename = "execinfo.h")]
+      public void symbols_fd (void*[] buffer, int fd);
+    }
+
     [CCode (cheader_filename = "unistd.h")]
     public int sethostname (string name, size_t len);