From d29abce19b35fc0b0c71eaaf2c294b153e309ae9 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 27 Jan 2025 16:42:04 +0300 Subject: fixes #4834 (History++: Incorrect timestamps in history after switching to new timestamp format) --- plugins/HistoryPlusPlus/hpp_events.pas | 8 ++++---- plugins/HistoryPlusPlus/hpp_global.pas | 11 +++++++++++ plugins/HistoryPlusPlus/hpp_sessionsthread.pas | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'plugins/HistoryPlusPlus') diff --git a/plugins/HistoryPlusPlus/hpp_events.pas b/plugins/HistoryPlusPlus/hpp_events.pas index f1ca2ddf0b..2436cff13a 100644 --- a/plugins/HistoryPlusPlus/hpp_events.pas +++ b/plugins/HistoryPlusPlus/hpp_events.pas @@ -209,7 +209,7 @@ begin begin ZeroMemory(@RecentEventInfo, SizeOf(RecentEventInfo)); RecentEventInfo.cbBlob := 0; - db_event_get(hDBEvent, @RecentEventInfo); + my_event_get(hDBEvent, @RecentEventInfo); RecentEvent := hDBEvent; end; Result := RecentEventInfo.timestamp; @@ -223,7 +223,7 @@ begin begin ZeroMemory(@RecentEventInfo, SizeOf(RecentEventInfo)); RecentEventInfo.cbBlob := 0; - db_event_get(hDBEvent, @RecentEventInfo); + my_event_get(hDBEvent, @RecentEventInfo); RecentEvent := hDBEvent; end; Result := GetMessageType(RecentEventInfo,EventIndex); @@ -393,7 +393,7 @@ begin BlobSize := 0; Result.cbBlob := BlobSize; - if db_event_get(hDBEvent, @Result) = 0 then + if my_event_get(hDBEvent, @Result) = 0 then begin Result.cbBlob := BlobSize; if BlobSize > 0 then @@ -423,7 +423,7 @@ begin dbei.cbBlob := BlobSize; dbei.pBlob := Result.pBlob; - if db_event_get(hDBEvent, @dbei) = 0 then + if my_event_get(hDBEvent, @dbei) = 0 then begin Result.cbBlob := BlobSize; if BlobSize > 0 then diff --git a/plugins/HistoryPlusPlus/hpp_global.pas b/plugins/HistoryPlusPlus/hpp_global.pas index 6af8367813..018e233b3f 100644 --- a/plugins/HistoryPlusPlus/hpp_global.pas +++ b/plugins/HistoryPlusPlus/hpp_global.pas @@ -293,6 +293,8 @@ procedure OpenUrl(const URLText: String; NewWindow: Boolean); function HppMessageBox(Handle: THandle; const Text: String; const Caption: String; Flags: Integer): Integer; +function my_event_get(hDbEvent:TMEVENT; dbei:PDBEVENTINFO):int; + function MakeTextXMLedA(const Text: AnsiString): AnsiString; function MakeTextXMLedW(const Text: WideString): WideString; function FormatCString(const Text: WideString): WideString; @@ -708,6 +710,15 @@ begin or (Pos(RTF_BEGIN_2, Value) = 1); end; +function my_event_get(hDbEvent:TMEVENT; dbei:PDBEVENTINFO):int; +begin + Result := db_event_get(hDbEvent, dbei); + if Result = 0 then begin + if (dbei.flags and DBEF_MSEC) <> 0 then + dbei.Timestamp := Trunc(dbei.Timestamp / 1000); + end; +end; + function _WideCharType(WC: WideChar; dwInfoType: Cardinal): Word; begin Win32Check(GetStringTypeExW(GetThreadLocale, dwInfoType, PWideChar(@WC), 1, Result)) diff --git a/plugins/HistoryPlusPlus/hpp_sessionsthread.pas b/plugins/HistoryPlusPlus/hpp_sessionsthread.pas index 5a57ca9cb4..9a1f4924db 100644 --- a/plugins/HistoryPlusPlus/hpp_sessionsthread.pas +++ b/plugins/HistoryPlusPlus/hpp_sessionsthread.pas @@ -180,7 +180,7 @@ begin begin ZeroMemory(@Event, SizeOf(Event)); Event.cbBlob := 0; - db_event_get(hDBEvent, @Event); + my_event_get(hDBEvent, @Event); CurTime := Event.Timestamp; if PrevTime = 0 then begin -- cgit v1.2.3