Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Update
libsass
a495d111-Expose-low-level-memory-libsass-heap-a...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File a495d111-Expose-low-level-memory-libsass-heap-allocator.patch of Package libsass
From a495d1114859170882d9e9e7cd5c79ccf8f94cb9 Mon Sep 17 00:00:00 2001 From: Marcel Greter <marcel.greter@ocbnet.ch> Date: Wed, 6 Apr 2016 03:45:14 +0200 Subject: [PATCH] Expose low-level memory (libsass heap) allocator --- docs/api-context.md | 8 ++++---- include/sass/base.h | 7 +++++++ src/sass.cpp | 24 ++++++++++++++++++++++++ src/util.cpp | 5 ----- src/util.hpp | 5 +++++ 5 files changed, 40 insertions(+), 9 deletions(-) Index: libsass-3.3.2/docs/api-context.md =================================================================== --- libsass-3.3.2.orig/docs/api-context.md +++ libsass-3.3.2/docs/api-context.md @@ -88,7 +88,7 @@ char* source_map_file; char* source_map_root; ``` ```C -// Custom functions that can be called from sccs code +// Custom functions that can be called from Sass code Sass_C_Function_List c_functions; ``` ```C @@ -168,12 +168,12 @@ struct Sass_Compiler* sass_make_data_com // Execute the different compilation steps individually // Usefull if you only want to query the included files -int sass_compiler_parse(struct Sass_Compiler* compiler); -int sass_compiler_execute(struct Sass_Compiler* compiler); +int sass_compiler_parse (struct Sass_Compiler* compiler); +int sass_compiler_execute (struct Sass_Compiler* compiler); // Release all memory allocated with the compiler // This does _not_ include any contexts or options -void sass_delete_compiler(struct Sass_Compiler* compiler); +void sass_delete_compiler (struct Sass_Compiler* compiler); // Release all memory allocated and also ourself void sass_delete_file_context (struct Sass_File_Context* ctx); Index: libsass-3.3.2/include/sass/base.h =================================================================== --- libsass-3.3.2.orig/include/sass/base.h +++ libsass-3.3.2/include/sass/base.h @@ -59,6 +59,13 @@ enum Sass_Output_Style { SASS_STYLE_COMPRESSED }; +// to allocate buffer to be filled +void* sass_alloc_memory(size_t size); +// to allocate a buffer from existing string +char* sass_copy_c_string(const char* str); +// to free overtaken memory when done +void sass_free_memory(void* ptr); + // Some convenient string helper function ADDAPI char* ADDCALL sass_string_quote (const char* str, const char quote_mark); ADDAPI char* ADDCALL sass_string_unquote (const char* str); Index: libsass-3.3.2/src/sass.cpp =================================================================== --- libsass-3.3.2.orig/src/sass.cpp +++ libsass-3.3.2/src/sass.cpp @@ -10,6 +10,30 @@ extern "C" { using namespace Sass; + // Allocate libsass heap memory + // Don't forget string termination! + void* ADDCALL sass_alloc_memory(size_t size) + { + void* ptr = malloc(size); + if (ptr == NULL) + out_of_memory(); + return ptr; + } + + char* ADDCALL sass_copy_c_string(const char* str) + { + size_t len = strlen(str) + 1; + char* cpy = (char*) sass_alloc_memory(len); + std::memcpy(cpy, str, len); + return cpy; + } + + // Deallocate libsass heap memory + void ADDCALL sass_free_memory(void* ptr) + { + if (ptr) free (ptr); + } + // caller must free the returned memory char* ADDCALL sass_string_quote (const char *str, const char quote_mark) { Index: libsass-3.3.2/src/util.cpp =================================================================== --- libsass-3.3.2.orig/src/util.cpp +++ libsass-3.3.2/src/util.cpp @@ -11,11 +11,6 @@ namespace Sass { - #define out_of_memory() do { \ - std::cerr << "Out of memory.\n"; \ - exit(EXIT_FAILURE); \ - } while (0) - double round(double val) { // work around some compiler issue Index: libsass-3.3.2/src/util.hpp =================================================================== --- libsass-3.3.2.orig/src/util.hpp +++ libsass-3.3.2/src/util.hpp @@ -11,6 +11,11 @@ namespace Sass { + #define out_of_memory() do { \ + std::cerr << "Out of memory.\n"; \ + exit(EXIT_FAILURE); \ + } while (0) + double round(double val); char* sass_strdup(const char* str); double sass_atof(const char* str);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor