diff --git a/ChangeLog.md b/ChangeLog.md index e59e6076..6b0b8781 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,13 @@ # Revision history for reflex +## 0.6.5 + +* Fix a bug in the Reflex Profiled transformer where + `Reflex.Class.mergeIncrementalG` and + `Reflex.Class.mergeIncrementalWithMoveG` implementations referenced + itself instead of the inner transformed timeline, causing an + infinite loop. + ## 0.6.4 * Support GHC 8.8 diff --git a/src/Reflex/Profiled.hs b/src/Reflex/Profiled.hs index db9aa829..f70d1e2a 100644 --- a/src/Reflex/Profiled.hs +++ b/src/Reflex/Profiled.hs @@ -147,8 +147,8 @@ instance Reflex t => Reflex (ProfiledTimeline t) where updated (Dynamic_Profiled d) = coerce $ profileEvent $ updated d unsafeBuildDynamic (ProfiledM a0) (Event_Profiled a') = coerce $ unsafeBuildDynamic a0 a' unsafeBuildIncremental (ProfiledM a0) (Event_Profiled a') = coerce $ unsafeBuildIncremental a0 a' - mergeIncrementalG nt = (Event_Profiled . coerce) #. mergeIncrementalG nt - mergeIncrementalWithMoveG nt = (Event_Profiled . coerce) #. mergeIncrementalWithMoveG nt + mergeIncrementalG nt res = Event_Profiled $ mergeIncrementalG (coerce nt) (coerce res) + mergeIncrementalWithMoveG nt res = Event_Profiled $ mergeIncrementalWithMoveG (coerce nt) (coerce res) currentIncremental (Incremental_Profiled i) = coerce $ currentIncremental i updatedIncremental (Incremental_Profiled i) = coerce $ profileEvent $ updatedIncremental i incrementalToDynamic (Incremental_Profiled i) = coerce $ incrementalToDynamic i