Mail Archives: cygwin/1997/11/14/04:42:58
I've recently made some additions and changes to a program of mine, which
filters out certain sets of characters (IE: ^01^ ) and turns them into ANSI
escape sequences for color. Needless to say it's for a telnet server type
application. The only problem is, that it seems to crash at a certain spot
every time (this spot can vary depending on the settings). I've gone
through and looked at debug code, and scanned over all the source and found
the line that caused the problem. The baffling thing about this line is
that it's the line that calls 'malloc'? It takes the length of a string,
adds a few to it, mallocs the memory, and then assigns a string into it.
This line is called many, many times before this, and works fine each time,
but it seems to trip up after a certain number of calls. I've asked a few
people what to do, and some told me it was some kinda of memory pointer
problem, and that I should add 16 to all the malloc calls I make. Did that,
and it progresses quite a bit farther but it then it drops out on another
malloc call. So now I'm lost as to what to do. Can anyone offer any help?
- Greg Neujahr
keetnet AT wilmington DOT net
/* Snippet of code that gets called too many times to count. */
char *color_sub(char *qstring) {
char *holdstr; // Temporary array to hold the results
char escape[2], subval[6]; // escape=escape character; subval=value
to sub
escape[0]=27; // Fisrt character=escape
escape[1]='\0'; // Make it a valid string
holdstr = (char *) malloc( strlen(qstring)+17 ); /* Allocate size for
result. This line is normally +1 not +17 */
strcpy(subval,escape); // Copy the escape string into the
substitute string
strcat(subval,"[30m"); // Tack on ANSI sub value
holdstr = subst(qstring, subval, "%%00%%"); // Substitue ansi string
qstring = (char *) malloc(strlen(holdstr)+16); // Allocate space for
result
qstring = holdstr; // Assign the result to the original string
/* More code that looks almost exactly the same follows. subst() is a
section that just substitutes out the %%??%% codes and turns them into Ansi
escapes. Yes, the string has a positive length (and is not 0). */
return qstring;
}
// EOF
So, is there anyone out there who can help?
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -