summaryrefslogtreecommitdiff
path: root/scss/src
diff options
context:
space:
mode:
authorGerman M. Bravo <german.mb@deipi.com>2011-12-26 15:33:28 -0600
committerGerman M. Bravo <german.mb@deipi.com>2011-12-26 15:33:28 -0600
commit9b1ad84654a520db055100ed2167f2542d7cdc59 (patch)
treedf5e92eaed6a36ad6dc1713cdb49f36c316a9179 /scss/src
parent8ccd33d07aa5dda7f98d67c9557c6e3838739197 (diff)
downloadpyscss-9b1ad84654a520db055100ed2167f2542d7cdc59.tar.gz
Using PyMem for allocating memory
Diffstat (limited to 'scss/src')
-rw-r--r--scss/src/_scss.c4
-rw-r--r--scss/src/block_locator.c11
-rw-r--r--scss/src/scanner.c39
3 files changed, 36 insertions, 18 deletions
diff --git a/scss/src/_scss.c b/scss/src/_scss.c
index ffa5017..d4f1a95 100644
--- a/scss/src/_scss.c
+++ b/scss/src/_scss.c
@@ -424,7 +424,7 @@ scss_Scanner_repr(scss_Scanner *self)
cur = strlen(p_token->regex->tok) * 2;
if (cur > max) max = cur;
}
- tok = malloc(max + 4);
+ tok = PyMem_New(char, max + 4);
repr = PyString_FromString("");
for (i = (start < 0) ? 0 : start; i < self->scanner->tokens_sz; i++) {
p_token = self->scanner->tokens[i];
@@ -452,7 +452,7 @@ scss_Scanner_repr(scss_Scanner *self)
first = 0;
}
- free(tok);
+ PyMem_Del(tok);
} else {
repr = PyString_FromString("None");
}
diff --git a/scss/src/block_locator.c b/scss/src/block_locator.c
index 3684085..d025ea3 100644
--- a/scss/src/block_locator.c
+++ b/scss/src/block_locator.c
@@ -8,6 +8,8 @@
* MIT license (http://www.opensource.org/licenses/mit-license.php)
* Copyright (c) 2011 German M. Bravo (Kronuz), All rights reserved.
*/
+#include <Python.h>
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -359,15 +361,16 @@ BlockLocator_finalize(void)
BlockLocator *
BlockLocator_new(char *codestr, int codestr_sz)
{
- BlockLocator *self = (BlockLocator *)malloc(sizeof(BlockLocator));
+ BlockLocator *self = PyMem_New(BlockLocator, 1);
+ memset(self, 0, sizeof(BlockLocator));
#ifdef DEBUG
fprintf(stderr, "%s\n", __PRETTY_FUNCTION__);
#endif
if (self) {
- self->_codestr = (char *)malloc(codestr_sz);
+ self->_codestr = PyMem_New(char, codestr_sz);
memcpy(self->_codestr, codestr, codestr_sz);
self->codestr_sz = codestr_sz;
- self->codestr = (char *)malloc(self->codestr_sz);
+ self->codestr = PyMem_New(char, self->codestr_sz);
memcpy(self->codestr, self->_codestr, self->codestr_sz);
self->codestr_ptr = self->codestr;
self->lineno = 0;
@@ -404,7 +407,7 @@ BlockLocator_rewind(BlockLocator *self)
fprintf(stderr, "%s\n", __PRETTY_FUNCTION__);
#endif
free(self->codestr);
- self->codestr = (char *)malloc(self->codestr_sz);
+ self->codestr = PyMem_New(char, self->codestr_sz);
memcpy(self->codestr, self->_codestr, self->codestr_sz);
self->codestr_ptr = self->codestr;
self->lineno = 0;
diff --git a/scss/src/scanner.c b/scss/src/scanner.c
index d9d6182..401c837 100644
--- a/scss/src/scanner.c
+++ b/scss/src/scanner.c
@@ -8,10 +8,23 @@
* MIT license (http://www.opensource.org/licenses/mit-license.php)
* Copyright (c) 2011 German M. Bravo (Kronuz), All rights reserved.
*/
+#include <Python.h>
+
#include <stdio.h>
#include <string.h>
#include "scanner.h"
+char *
+PyMem_Strdup(const char *str)
+{
+ if (str != NULL) {
+ char *copy = PyMem_New(char, strlen(str) + 1);
+ if (copy != NULL)
+ return strcpy(copy, str);
+ }
+ return NULL;
+}
+
Pattern *Pattern_patterns[MAX_PATTERNS];
int Pattern_patterns_initialized = 0;
@@ -25,9 +38,10 @@ Pattern_regex(char *tok, char *expr) {
for (j = 0; j < MAX_PATTERNS; j++) {
if(Pattern_patterns[j] == NULL) {
if (expr) {
- Pattern_patterns[j] = (Pattern *)calloc(1, sizeof(Pattern));
- Pattern_patterns[j]->tok = strdup(tok);
- Pattern_patterns[j]->expr = strdup(expr);
+ Pattern_patterns[j] = PyMem_New(Pattern, 1);
+ memset(Pattern_patterns[j], 0, sizeof(Pattern));
+ Pattern_patterns[j]->tok = PyMem_Strdup(tok);
+ Pattern_patterns[j]->expr = PyMem_Strdup(expr);
ret = Pattern_patterns[j];
}
break;
@@ -126,12 +140,12 @@ Pattern_finalize(void) {
if (Pattern_patterns_initialized) {
for (j = 0; j < MAX_PATTERNS; j++) {
if (Pattern_patterns[j] != NULL) {
- free(Pattern_patterns[j]->tok);
- free(Pattern_patterns[j]->expr);
+ PyMem_Del(Pattern_patterns[j]->tok);
+ PyMem_Del(Pattern_patterns[j]->expr);
if (Pattern_patterns[j]->pattern != NULL) {
pcre_free(Pattern_patterns[j]->pattern);
}
- free(Pattern_patterns[j]);
+ PyMem_Del(Pattern_patterns[j]);
Pattern_patterns[j] = NULL;
}
}
@@ -256,7 +270,7 @@ Scanner_reset(Scanner *self, char *input, int input_sz) {
fprintf(stderr, "%s\n", __PRETTY_FUNCTION__);
#endif
if (input_sz) {
- if (self->input) free(self->input);
+ if (self->input) PyMem_Del(self->input);
self->input = strndup(input, input_sz + 1);
self->input[input_sz] = '\0';
self->input_sz = input_sz;
@@ -264,7 +278,7 @@ Scanner_reset(Scanner *self, char *input, int input_sz) {
self->tokens_sz = 0;
for (i = 0; i < MAX_TOKENS; i++) {
if (self->tokens[i]) {
- free(self->tokens[i]);
+ PyMem_Del(self->tokens[i]);
}
self->tokens[i] = NULL;
for (j = 0; j < MAX_PATTERNS; j++) {
@@ -283,17 +297,17 @@ Scanner_del(Scanner *self) {
#endif
for (i = 0; i < MAX_TOKENS; i++) {
if (self->tokens[i]) {
- free(self->tokens[i]);
+ PyMem_Del(self->tokens[i]);
}
self->tokens[i] = NULL;
}
if (self->input != NULL) {
- free(self->input);
+ PyMem_Del(self->input);
self->input = NULL;
}
- free(self);
+ PyMem_Del(self);
}
Scanner*
@@ -305,7 +319,8 @@ Scanner_new(Pattern patterns[], int patterns_sz, Pattern ignore[], int ignore_sz
#ifdef DEBUG
fprintf(stderr, "%s\n", __PRETTY_FUNCTION__);
#endif
- self = (Scanner *)calloc(1, sizeof(Scanner));
+ self = PyMem_New(Scanner, 1);
+ memset(self, 0, sizeof(Scanner));
if (self) {
for (i = 0; i < patterns_sz; i++) {
regex = Pattern_regex(patterns[i].tok, patterns[i].expr);