Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2003-11-21 01:22:48 +0300
committerMartin Poirier <theeth@yahoo.com>2003-11-21 01:22:48 +0300
commitb70171c5bc5791cf65203e1a532729b8de5ac07f (patch)
treeb42eb1966692283f056edfe4f5805230ae711698 /source/blender/src/drawtext.c
parent711af5cf5e20cdda53f58e8145774017423169ed (diff)
newline conversion speed up by intrr
Diffstat (limited to 'source/blender/src/drawtext.c')
-rw-r--r--source/blender/src/drawtext.c73
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