Neustart startet die Fassung, die gestartet wurde, nicht die laufende - #20
Merged
Merged
Conversation
Eine zweite Fassung mit anderem Baustempel ließ die laufende sich neu
starten -- mit deren eigenem Programmpfad. Lag die neue Fassung daneben
(28.09.: Contestprogramm-neu.app neben Contestprogramm.app), beendete
sich die neue, und die alte kam als alte Fassung wieder.
Die zweite Instanz schickt jetzt zusätzlich ihren absoluten Programmpfad
("raise <stempel> <pfad>\n", Pfad prozentkodiert wegen Leerzeichen).
newerBuildStarted(program) reicht ihn weiter, main.cpp startet genau
diesen Pfad; ohne Pfad, oder wenn er sich nicht starten lässt, wie
bisher applicationFilePath().
Abwärtskompatibel: "raise" und "raise <stempel>" älterer Fassungen
funktionieren weiter. Der Empfänger liest jetzt ganze Zeilen (alle
Fassungen schicken '\n'), und übernimmt nur einen absoluten Pfad auf
eine ausführbare Datei.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Worum es geht
Beim Nachstellen des Absturzes aus #19 aufgefallen: Startet man eine Fassung mit anderem Baustempel, während eine läuft, startet sich die laufende neu – aber mit ihrem eigenen Programmpfad (
applicationFilePath()). Das stimmt nur, wenn am selben Ort neu gebaut oder installiert wurde. Lag die neue Fassung daneben (28.09.:/Applications/Contestprogramm-neu.appneben/Applications/Contestprogramm.app), beendete sich die neue, und die alte kam als alte Fassung wieder.Änderung
raise <stempel> <pfad>\n. Der Pfad ist prozentkodiert (Leerzeichen) und wird nur zusammen mit einem Stempel geschickt.newerBuildStarted(const QString& program)reicht ihn weiter;main.cppstartet genau diesen Pfad. Ohne Pfad – oder wenn der Start scheitert – wie bisherapplicationFilePath().canReadLine/readLine) stattreadAll(): Mit Pfad ist die Zeile lang genug, um in zwei Stücken anzukommen. Alle bisherigen Fassungen schließen mit\nab (raise\nseit e894a4a,raise <stempel>\nseit ade8b65).release()→deleteLater), das aus dem Signal heraus aufgerufen wird.Abwärtskompatibel:
raiseundraise <stempel>älterer Fassungen funktionieren weiter. Umgekehrt kann eine laufende 0.1.1 den Pfad nicht auswerten – dort bleibt es beim alten Verhalten, bis diese Fassung einmal läuft.Tests (
tests/test_single_instance.cpp)theRestartGetsTheProgramTheNewerBuildWasStartedAs– Pfad mit Leerzeichen („Contestprogramm neu.app/…") kommt unverändert an; eine Kopie mit gleichem Stempel wird nur nach vorne geholt. Gegenprobe: ohne gesendeten Pfad rot.anOlderBuildsHandOverWithoutAProgramStillWorks– Rohzeilenraise 2000\n(Neustart, leerer Pfad, „ok" kommt zurück) undraise\n(nur nach vorne).aHandedPathThatIsNotAProgramIsDropped– fehlende Datei, Verzeichnis, relativer Pfad → leer.Live geprüft (macOS,
CONTESTPROGRAMM_DATA_DIRim Scratchpad)…/Programme/Contestprogramm.appgestartet (PID 18304).…/Programme/Contestprogramm neu.app(anderer Stempel) gestartet → B beendet sich mit 0, A beendet sich, Nachfolger PID 18380 läuft ausContestprogramm neu.app.~/Library/Application Supportunverändert (md5 und mtime).🤖 Generated with Claude Code