tree-sitter/cli/src/allocations_stubs.rs

40 lines
1.2 KiB
Rust

// In all dev builds, the tree-sitter library is built with the `allocation-tracking`
// feature enabled. This causes the library to link against a set of externally
// defined C functions like `ts_record_malloc` and `ts_record_free`. In tests, these
// are defined to actually keep track of outstanding allocations. But when not running
// tests, the symbols still need to be defined. This file provides pass-through
// implementations of all of these functions.
use std::os::raw::c_void;
extern "C" {
fn malloc(size: usize) -> *mut c_void;
fn calloc(count: usize, size: usize) -> *mut c_void;
fn realloc(ptr: *mut c_void, size: usize) -> *mut c_void;
fn free(ptr: *mut c_void);
}
#[no_mangle]
unsafe extern "C" fn ts_record_malloc(size: usize) -> *const c_void {
malloc(size)
}
#[no_mangle]
unsafe extern "C" fn ts_record_calloc(count: usize, size: usize) -> *const c_void {
calloc(count, size)
}
#[no_mangle]
unsafe extern "C" fn ts_record_realloc(ptr: *mut c_void, size: usize) -> *const c_void {
realloc(ptr, size)
}
#[no_mangle]
unsafe extern "C" fn ts_record_free(ptr: *mut c_void) {
free(ptr)
}
#[no_mangle]
extern "C" fn ts_toggle_allocation_recording(_: bool) -> bool {
false
}