diff --git a/src/p_mobj.c b/src/p_mobj.c
index 45a26cbc52f60dc426badfa9e47a673a18185e25..c9cacb444c6030b172de7bbbd277bcc9e1cb0d87 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -7459,7 +7459,7 @@ void P_MobjThinker(mobj_t *mobj)
 					mobj->cvmem--;
 				else
 				{
-					P_LinedefExecute(mobj->extravalue2, mobj, NULL);
+					INT32 exectag = mobj->extravalue2; // remember this before we erase the values
 
 					if (mobj->lastlook)
 						mobj->cvmem = mobj->cusval; // reset timer for next failure
@@ -7469,6 +7469,8 @@ void P_MobjThinker(mobj_t *mobj)
 						mobj->eflags &= ~MFE_TRACERANGLE;
 						mobj->lastlook = mobj->extravalue1 = mobj->extravalue2 = mobj->cvmem = mobj->cusval = 0;
 					}
+
+					P_LinedefExecute(exectag, mobj, NULL);
 				}
 			}
 			else