X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Frenderers%2Frichtext.c;h=63ee8e569c1a5d1982c3a20ce588939e45eb0fed;hb=3ad4532bb952dbcb28a2b9fa72d7f1f87b5f8fd4;hp=17d55cc0130ae09f155b3dc4a1939bc617fa86d6;hpb=e7a76b0d8a0cc6aa77966509780973a6f8216ef7;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/renderers/richtext.c b/Usermode/Applications/axwin3_src/WM/renderers/richtext.c index 17d55cc0..63ee8e56 100644 --- a/Usermode/Applications/axwin3_src/WM/renderers/richtext.c +++ b/Usermode/Applications/axwin3_src/WM/renderers/richtext.c @@ -382,35 +382,33 @@ int Renderer_RichText_HandleIPC_WriteLine(tWindow *Window, size_t Len, const voi tRichText_Line *prev = NULL; tRichText_Line *line = Renderer_RichText_int_GetLine(Window, msg->Line, &prev); int reqspace = ((Len - sizeof(*msg)) + LINE_SPACE_UNIT-1) & ~(LINE_SPACE_UNIT-1); + tRichText_Line *new = NULL; if( !line ) { // New line! tRichText_Line *new = malloc(sizeof(*line) + reqspace); - // TODO: Bookkeeping on how much memory each window uses new->Next = (prev ? prev->Next : NULL); new->Prev = prev; new->Num = msg->Line; - new->Space = reqspace; - *(prev ? &prev->Next : &info->FirstLine) = new; - if(new->Next) new->Next->Prev = new; - line = new; } else if( line->Space < reqspace ) { // Need to allocate more space tRichText_Line *new = realloc(line, sizeof(*line) + reqspace); + } + else + { + // It fits :) + } + if( new ) + { // TODO: Bookkeeping on how much memory each window uses new->Space = reqspace; - if(new->Prev) new->Prev->Next = new; else info->FirstLine = new; if(new->Next) new->Next->Prev = new; line = new; } - else - { - // It fits :) - } line->ByteLength = Len - sizeof(*msg) - 1; memcpy(line->Data, msg->LineData, Len - sizeof(*msg)); line->bIsClean = 0;