diff options
author | Martin Poirier <theeth@yahoo.com> | 2003-11-21 01:22:48 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2003-11-21 01:22:48 +0300 |
commit | b70171c5bc5791cf65203e1a532729b8de5ac07f (patch) | |
tree | b42eb1966692283f056edfe4f5805230ae711698 /source/blender/src/drawtext.c | |
parent | 711af5cf5e20cdda53f58e8145774017423169ed (diff) |
newline conversion speed up by intrr
Diffstat (limited to 'source/blender/src/drawtext.c')
-rw-r--r-- | source/blender/src/drawtext.c | 73 |
1 files changed, 28 insertions, 45 deletions
diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c index 3a14c323489..6920c38d34b 100644 --- a/source/blender/src/drawtext.c +++ b/source/blender/src/drawtext.c @@ -836,54 +836,37 @@ void txt_copy_selectbuffer (Text *text) #ifdef _WIN32 -char *unixNewLine(char * buffer) { - char * output = NULL; - int i = 0, count = 1; - int len = strlen(buffer); - - for (i; i<len; i++) { - count++; - if (buffer[i] == '\r' || buffer[i] == '\0') - count--; - } - output = MEM_callocN(sizeof(char) * count, "output buffer"); - count = 0; - i = 0; - for (i; i<len; i++) { - if (buffer[i] != '\r' && buffer[i] != '\0') { - output[count] = buffer[i]; - count++; - } - } - output[count] = '\0'; - return output; +char *unixNewLine(char *buffer) +{ + char *p, *p2, *output; + + /* we can afford the few extra bytes */ + output= MEM_callocN(strlen(buffer)+1, "unixnewline"); + for (p= buffer, p2= output; *p; p++) + if (*p != '\r') *(p2++)= *p; + + *p2= 0; + return(output); } -char *winNewLine(char * buffer) { - char * output = NULL; - int i = 0, count = 1; - int len = strlen(buffer); - - for (i; i<len; i++, count++) { - if (buffer[i] == '\n') - count++; - } - output = MEM_callocN(sizeof(char) * count, "input buffer"); - count = 0; - i = 0; - for (i; i<len; i++, count++) { - if (buffer[i] == '\n') { - output[count] = '\r'; - count++; - output[count] = '\n'; - } - else { - output[count] = buffer[i]; - } +char *winNewLine(char *buffer) +{ + char *p, *p2, *output; + int add= 0; + + for (p= buffer; *p; p++) + if (*p == '\n') add++; + + bufferlength= p-buffer+add+1; + output= MEM_callocN(bufferlength, "winnewline"); + for (p= buffer, p2= output; *p; p++, p2++) { + if (*p == '\n') { + *(p2++)= '\r'; *p2= '\n'; + } else *p2= *p; } - output[count] = '\0'; - bufferlength = count; - return output; + *p2= 0; + + return(output); } #endif |