From b76eb41a06baf78ff5f2a6b0e8046ce97ef1f195 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 9 Nov 2022 07:32:05 +1100 Subject: [PATCH 1/2] fix(developer): handle edge cases for app sources Relates to #6928 and KEYMAN-DEVELOPER-74. Fixes one more potential pathway for assertions being raised, and adds some extra debugging in case there are additional pathways we are not capturing. --- .../http/Keyman.Developer.System.HttpServer.AppSource.pas | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/developer/src/tike/http/Keyman.Developer.System.HttpServer.AppSource.pas b/developer/src/tike/http/Keyman.Developer.System.HttpServer.AppSource.pas index 723d1ec369..df0b86bf13 100644 --- a/developer/src/tike/http/Keyman.Developer.System.HttpServer.AppSource.pas +++ b/developer/src/tike/http/Keyman.Developer.System.HttpServer.AppSource.pas @@ -75,7 +75,11 @@ var begin T := FSources.LockList; try - Assert(T.Count = 0, 'TAppSourceHttpResponder.Sources should be empty at destruction'); + // Note: Unlike regular functions, Assert has short-circuit evaluation + // intrinsics on the first param which makes it safe to dereference T[0] in + // the second parameter. + Assert(T.Count = 0, 'TAppSourceHttpResponder.Sources should be empty at destruction '+ + '(T.Count='+IntToStr(T.Count)+', T[0].Filename='+T[0].Filename+')'); finally FSources.UnlockList; end; From d2fe2a61f91cfa51fa7e75dcc8c57d47361fe406 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 9 Nov 2022 07:36:28 +1100 Subject: [PATCH 2/2] fix(developer): patch from previous commit --- developer/src/tike/oskbuilder/UframeTouchLayoutBuilder.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/developer/src/tike/oskbuilder/UframeTouchLayoutBuilder.pas b/developer/src/tike/oskbuilder/UframeTouchLayoutBuilder.pas index 78cb768d3a..4b0405a32f 100644 --- a/developer/src/tike/oskbuilder/UframeTouchLayoutBuilder.pas +++ b/developer/src/tike/oskbuilder/UframeTouchLayoutBuilder.pas @@ -87,7 +87,7 @@ type procedure UpdateCharacterMap(code: string); // I4046 function GetFontInfo(Index: TKeyboardFont): TKeyboardFontInfo; // I4057 procedure SetFontInfo(Index: TKeyboardFont; const Value: TKeyboardFontInfo); // I4057 - + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefLoadEnd(Sender: TObject); procedure RegisterSource; @@ -393,7 +393,7 @@ begin finally RegisterSource; - if FState <> '' then + if (FFileName <> '') and (FState <> '') then modWebHttpServer.AppSource.RegisterSource(FFilename + '#state', FState, True); end;