From 0557d832973ac99ee2554fa7fff35652dac4f366 Mon Sep 17 00:00:00 2001 From: Ilyong Cho Date: Thu, 11 Jul 2013 16:33:25 +0900 Subject: [PATCH] Use realloc to allocate memory so that it sync with allocator on css select context --- netsurfcss.rc | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/netsurfcss.rc b/netsurfcss.rc index a15ccc5..9fe3625 100644 --- a/netsurfcss.rc +++ b/netsurfcss.rc @@ -50,7 +50,7 @@ pub fn require_ok(code: css_error, what: &str) { } } -pub extern fn realloc(ptr: *mut c_void, len: size_t, _pw: *c_void) -> *mut c_void { +pub fn realloc(ptr: *mut c_void, len: size_t, _pw: *c_void) -> *mut c_void { unsafe { if len == 0 { // Needed to prevent a memory leak on Mac. @@ -62,6 +62,10 @@ pub extern fn realloc(ptr: *mut c_void, len: size_t, _pw: *c_void) -> *mut c_voi } } +pub extern fn realloc_ext(ptr: *mut c_void, len: size_t, pw: *c_void) -> *mut c_void { + realloc(ptr, len, pw) +} + pub mod types { use wapcaplet::LwcString; use ll::stylesheet::css_fixed; @@ -187,7 +191,7 @@ pub mod stylesheet { use ll_css_stylesheet_create = ll::stylesheet::css_stylesheet_create; use CssResult; use require_ok; - use realloc; + use realloc_ext; use ll::errors::CSS_NEEDDATA; pub struct CssStylesheetParams { @@ -240,7 +244,7 @@ pub mod stylesheet { unsafe { let mut sheet: *css_stylesheet = null(); let code = ll_css_stylesheet_create( - to_unsafe_ptr(ll_params), realloc, null(), to_mut_unsafe_ptr(&mut sheet)); + to_unsafe_ptr(ll_params), realloc_ext, null(), to_mut_unsafe_ptr(&mut sheet)); require_ok(code, "creating stylesheet"); assert!(sheet.is_not_null()); sheet @@ -593,6 +597,7 @@ pub mod select { use ll::select::{CSS_SELECT_HANDLER_VERSION_1, css_select_results_destroy}; use require_ok; use realloc; + use realloc_ext; use std::ptr::{null, to_mut_unsafe_ptr, to_unsafe_ptr}; use std::cast::transmute; use ll::errors::{css_error, CSS_OK}; @@ -628,7 +633,7 @@ pub mod select { pub fn css_select_ctx_create() -> CssSelectCtx { let mut select_ctx: *css_select_ctx = null(); - let code = unsafe { ll_css_select_ctx_create(realloc, null(), to_mut_unsafe_ptr(&mut select_ctx)) }; + let code = unsafe { ll_css_select_ctx_create(realloc_ext, null(), to_mut_unsafe_ptr(&mut select_ctx)) }; require_ok(code, "creating select context"); assert!(select_ctx.is_not_null()); @@ -965,7 +970,7 @@ pub mod select { let class = classes.map(|e| e.raw_reffed()); let len = classes.len(); let size = (len * sys::size_of::()); - let mem = libc::malloc(size as libc::size_t) as *mut u8; + let mem = realloc(ptr::mut_null(), size as libc::size_t, null()) as *mut u8; ptr::copy_memory(mem, vec::raw::to_ptr(class) as *u8, size); (mem as **lwc_string, len as u32) },