[PATCH 1/2] riched20: Add back-reference to outer ME_Run from struct re_object.

Jinoh Kang jinoh.kang.kr at gmail.com
Sun Mar 20 14:37:55 CDT 2022


Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---
 dlls/riched20/caret.c   | 5 +++--
 dlls/riched20/editstr.h | 2 ++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index 6d32776e3d2..c8658098e18 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -442,7 +442,7 @@ BOOL ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, int nChars)
                                nChars, FALSE);
 }
 
-static struct re_object* create_re_object(const REOBJECT *reo)
+static struct re_object* create_re_object(const REOBJECT *reo, ME_Run *run)
 {
   struct re_object *reobj = heap_alloc(sizeof(*reobj));
 
@@ -452,6 +452,7 @@ static struct re_object* create_re_object(const REOBJECT *reo)
     return NULL;
   }
   ME_CopyReObject(&reobj->obj, reo, REO_GETOBJ_ALL_INTERFACES);
+  reobj->run = run;
   return reobj;
 }
 
@@ -477,7 +478,7 @@ void editor_insert_oleobj(ME_TextEditor *editor, const REOBJECT *reo)
 
   run = run_insert( editor, cursor, style, &space, 1, MERF_GRAPHICS );
 
-  run->reobj = create_re_object( reo );
+  run->reobj = create_re_object( reo, run );
 
   prev = run;
   while ((prev = run_prev_all_paras( prev )))
diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h
index 889795de189..3b166234f23 100644
--- a/dlls/riched20/editstr.h
+++ b/dlls/riched20/editstr.h
@@ -147,11 +147,13 @@ typedef enum {
 /******************************** structures *************************/
 
 struct tagME_DisplayItem;
+struct tagME_Run;
 
 struct re_object
 {
   struct list entry;
   REOBJECT obj;
+  struct tagME_Run *run; /* ptr to the reobj's run */
 };
 
 typedef struct tagME_Run
-- 
2.34.1




More information about the wine-devel mailing list