diff options
| author | Matthias Melcher <git@matthiasm.com> | 2018-12-29 00:34:57 +0100 |
|---|---|---|
| committer | Matthias Melcher <git@matthiasm.com> | 2018-12-29 00:34:57 +0100 |
| commit | a3ee6cff92b69d4ec0e3fe9a2699aa3d970f4323 (patch) | |
| tree | 662403b891867ace1759cc8b84d4b43d7e9ecb0c /src/gl_draw.cxx | |
| parent | a77ffd1dde4f26cd12d325778a0f4e597f012b41 (diff) | |
Refactored gl_remove_displaylist_fonts to be more easily readable and to stop triggering static analysis tool.
Diffstat (limited to 'src/gl_draw.cxx')
| -rw-r--r-- | src/gl_draw.cxx | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/gl_draw.cxx b/src/gl_draw.cxx index 695c4ee08..ed35d8d62 100644 --- a/src/gl_draw.cxx +++ b/src/gl_draw.cxx @@ -97,26 +97,24 @@ void gl_remove_displaylist_fonts() for (int j = 0 ; j < FL_FREE_FONT ; ++j) { - Fl_Font_Descriptor* past = 0; - Fl_Font_Descriptor** s_first = Fl_Gl_Window_Driver::global()->fontnum_to_fontdescriptor(j); - Fl_Font_Descriptor* f = *s_first; - while (f != 0) { - if(f->listbase) { - if(f == *s_first) { - *s_first = f->next; - } - else { - past->next = f->next; + Fl_Font_Descriptor *prevDesc = 0L, *nextDesc = 0L; + Fl_Font_Descriptor *&firstDesc = *Fl_Gl_Window_Driver::global()->fontnum_to_fontdescriptor(j); + for (Fl_Font_Descriptor *desc = firstDesc; desc; desc = nextDesc) + { + nextDesc = desc->next; + if(desc->listbase) { + // remove descriptor from a single-linked list + if(desc == firstDesc) { + firstDesc = desc->next; + } else if (prevDesc) { + // prevDesc should not be NULL, but this test will make static analysis shut up + prevDesc->next = desc->next; } // It would be nice if this next line was in a destructor somewhere - glDeleteLists(f->listbase, Fl_Gl_Window_Driver::global()->genlistsize()); - Fl_Font_Descriptor* tmp = f; - f = f->next; - delete tmp; - } - else { - past = f; - f = f->next; + glDeleteLists(desc->listbase, Fl_Gl_Window_Driver::global()->genlistsize()); + delete desc; + } else { + prevDesc = desc; } } } |
