From: Evan Nemerson Date: Wed, 13 Aug 2014 18:11:24 +0000 (-0700) Subject: linux: improve backtrace bindings X-Git-Tag: 0.25.2~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=646ad7e1bd8e152229615da0b709a14dabf36c89;p=thirdparty%2Fvala.git linux: improve backtrace bindings 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*. --- diff --git a/vapi/linux.vapi b/vapi/linux.vapi index ffa7ce461..5cceea10e 100644 --- a/vapi/linux.vapi +++ b/vapi/linux.vapi @@ -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);