Introduction
Introduction Statistics Contact Development Disclaimer Help
adding reallocz, adding workaround for segfault, some reformating. - smu - smu …
git clone git://git.codemadness.org/smu
Log
Files
Refs
README
LICENSE
---
commit c499a2afe19c02a3826d2f61bc3a747e6fdbffdf
parent 22b697c8d08fb0705cd7d64efd5e45f338fd5afc
Author: Enno Boland (Gottox) <[email protected]>
Date: Wed, 2 Jul 2008 09:43:21 +0200
adding reallocz, adding workaround for segfault, some reformating.
Diffstat:
M smu.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
---
diff --git a/smu.c b/smu.c
@@ -31,6 +31,7 @@ static int doreplace(const char *begin, const char *end, int …
static int doshortlink(const char *begin, const char *end, int newblock); /* P…
static int dosurround(const char *begin, const char *end, int newblock); /* P…
static int dounderline(const char *begin, const char *end, int newblock); /* P…
+static void *ereallocz(void *p, size_t size);
static void hprint(const char *begin, const char *end); /* e…
static void process(const char *begin, const char *end, int isblock); /* P…
@@ -274,7 +275,7 @@ int
dolist(const char *begin, const char *end, int newblock) {
unsigned int i, j, indent, run, ul, isblock;
const char *p, *q;
- char *buffer;
+ char *buffer = NULL;
isblock = 0;
if(newblock)
@@ -297,8 +298,7 @@ dolist(const char *begin, const char *end, int newblock) {
return 0;
for(p++; p != end && (*p == ' ' || *p == '\t'); p++);
indent = p - q;
- if(!(buffer = malloc(BUFSIZ)))
- eprint("Malloc failed.");
+ buffer = ereallocz(buffer, BUFSIZ);
if(!newblock)
fputc('\n', stdout);
fputs(ul ? "<ul>\n" : "<ol>\n", stdout);
@@ -492,6 +492,19 @@ dounderline(const char *begin, const char *end, int newblo…
return 0;
}
+void *
+ereallocz(void *p, size_t size) {
+ void *res;
+ if(p)
+ res = realloc(p , size);
+ else
+ res = calloc(1, size);
+
+ if(!res)
+ eprint("fatal: could not malloc() %u bytes\n", size);
+ return res;
+}
+
void
hprint(const char *begin, const char *end) {
const char *p;
@@ -516,13 +529,13 @@ process(const char *begin, const char *end, int newblock)…
int affected;
unsigned int i;
- for(p = begin; p != end;) {
+ for(p = begin; p < end;) {
if(newblock)
while(*p == '\n')
if(++p == end)
return;
affected = 0;
- for(i = 0; i < LENGTH(parsers) && affected == 0; i++)
+ for(i = 0; i < LENGTH(parsers) && !affected; i++)
affected = parsers[i](p, end, newblock);
p += abs(affected);
if(!affected) {
@@ -544,7 +557,7 @@ process(const char *begin, const char *end, int newblock) {
int
main(int argc, char *argv[]) {
- char *buffer;
+ char *buffer = NULL;
int s, i;
unsigned long len, bsize;
FILE *source = stdin;
@@ -566,15 +579,14 @@ main(int argc, char *argv[]) {
if(i < argc && !(source = fopen(argv[i], "r")))
eprint("Cannot open file `%s`\n",argv[i]);
bsize = 2 * BUFSIZ;
- if(!(buffer = malloc(bsize)))
- eprint("Malloc failed.");
+ buffer = ereallocz(buffer, bsize);
len = 0;
while((s = fread(buffer + len, 1, BUFSIZ, source))) {
len += s;
if(BUFSIZ + len + 1 > bsize) {
bsize += BUFSIZ;
if(!(buffer = realloc(buffer, bsize)))
- eprint("Malloc failed.");
+ eprint("realloc failed.");
}
}
buffer[len] = '\0';
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.