зеркало из https://github.com/mozilla/gecko-dev.git
Change lo_AppendFloatInLineList to use lo_NewElement instead of XP_NEW_ZAP. This fixes a memory leak, since now it's allocated from the arena instead of just random heap space.
This commit is contained in:
Родитель
5585c8333c
Коммит
a1f347a78c
|
@ -902,7 +902,7 @@ lo_FinishEmbed(MWContext *context, lo_DocState *state, LO_EmbedStruct *embed)
|
|||
embed->objTag.next = state->float_list;
|
||||
state->float_list = (LO_Element *)embed;
|
||||
|
||||
lo_AppendFloatInLineList(state, (LO_Element*)embed, NULL);
|
||||
lo_AppendFloatInLineList(context, state, (LO_Element*)embed, NULL);
|
||||
|
||||
lo_LayoutFloatEmbed(context, state, embed, TRUE);
|
||||
|
||||
|
|
|
@ -2243,7 +2243,7 @@ lo_FinishImage(MWContext *context, lo_DocState *state, LO_ImageStruct *image)
|
|||
* Append a dummy layout element in the line list. When the relayout engine
|
||||
* will see this dummy element, it will call lo_LayoutFloatImage()
|
||||
*/
|
||||
lo_AppendFloatInLineList( state, (LO_Element *) image, NULL );
|
||||
lo_AppendFloatInLineList(context, state, (LO_Element *) image, NULL );
|
||||
|
||||
lo_LayoutFloatImage( context, state, image, TRUE);
|
||||
|
||||
|
|
|
@ -650,7 +650,7 @@ lo_FinishJavaApp(MWContext *context, lo_DocState *state,
|
|||
java_app->objTag.next = state->float_list;
|
||||
state->float_list = (LO_Element *)java_app;
|
||||
|
||||
lo_AppendFloatInLineList(state, (LO_Element*)java_app, NULL);
|
||||
lo_AppendFloatInLineList(context, state, (LO_Element*)java_app, NULL);
|
||||
|
||||
lo_LayoutFloatJavaApp(context, state, java_app, TRUE);
|
||||
|
||||
|
|
|
@ -1367,7 +1367,7 @@ extern void lo_FillInLineFeed( MWContext *context, lo_DocState *state, int32 bre
|
|||
extern void lo_UpdateStateWhileFlushingLine( MWContext *context, lo_DocState *state );
|
||||
extern void lo_AppendLineFeed( MWContext *context, lo_DocState *state, LO_LinefeedStruct *linefeed, int32 breaking, Bool updateFE );
|
||||
extern void lo_UpdateStateAfterFlushingLine( MWContext *context, lo_DocState *state, LO_LinefeedStruct *linefeed, Bool inRelayout );
|
||||
extern void lo_AppendFloatInLineList( lo_DocState *state, LO_Element *ele, LO_Element *restOfLine);
|
||||
extern void lo_AppendFloatInLineList( MWContext *context, lo_DocState *state, LO_Element *ele, LO_Element *restOfLine);
|
||||
|
||||
/*
|
||||
* Common code for layout and relayout of tables
|
||||
|
|
|
@ -1652,10 +1652,12 @@ void lo_rl_AppendLinefeedAndFlushLine( MWContext *context, lo_DocState *state, L
|
|||
* Append a dummy layout element in the line list. When the relayout engine
|
||||
* will see this dummy element, it will call lo_LayoutFloat{Image,JavaApp,Embed}()
|
||||
*/
|
||||
void lo_AppendFloatInLineList( lo_DocState *state, LO_Element *ele, LO_Element *restOfLine)
|
||||
void lo_AppendFloatInLineList(MWContext *context,
|
||||
lo_DocState *state, LO_Element *ele, LO_Element *restOfLine)
|
||||
{
|
||||
LO_Element *eptr;
|
||||
LO_FloatStruct *float_dummy = XP_NEW_ZAP(LO_FloatStruct);
|
||||
LO_FloatStruct *float_dummy = (LO_FloatStruct*)lo_NewElement(context, state,
|
||||
LO_FLOAT, NULL, 0);
|
||||
float_dummy->float_ele = ele;
|
||||
float_dummy->lo_any.type = LO_FLOAT;
|
||||
float_dummy->lo_any.ele_id = NEXT_ELEMENT;
|
||||
|
|
Загрузка…
Ссылка в новой задаче