commit 48241b2acd5640e0de16e527e5ce1ad0c53be81a
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Fri Oct 31 10:34:52 2025 -0400

    Downgrade database from version 1385 to 1384.
    
    In commit 08a7b58a73 the schema was upgraded to 1385.
    This should not be done in a fixes branch.

commit 7109ce8e024550b5697de95e2fff4bf6209a5ca7
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Fri Oct 31 10:16:00 2025 -0400

    Revert "Update program titles recognized by the "MLB" recording extender."
    
    This reverts commit 08a7b58a73826ae59d74ffae571639a5800f4e03.
    
    Schema updates must not be done is a released fixes branch.

commit 08a7b58a73826ae59d74ffae571639a5800f4e03
Author: David Hampton <mythtv@love2code.net>
Date:   Sun Oct 26 17:17:00 2025 -0400

    Update program titles recognized by the "MLB" recording extender.
    
    Add the program names "World Series" and "MLB All-Star Game".
    
    (cherry picked from commit 1a43685fa2013895a587c0690341aba1f46ae469)

commit 9a98f5f9a67a3f6a0251072199c37d9f542a21ef
Author: John Hoyt <john.hoyt@gmail.com>
Date:   Sun Oct 26 18:40:42 2025 -0400

    macOS: disable test_recordingextender sqlite testing
    
      Skip the sqlitetests as macports has a dated sqlite-pcre
      impementation and homebrew no longer has one available.
    
      These may be reactivated once macports and homebrew have available
      sqlite extensions that support REGEX without outside install.
    
    (cherry picked from commit 30364adc33821c9669e084b0238bb0916dd0f68b)

commit 8956c082909141d1e553585a845118c6cce4accd
Author: John Hoyt <john.hoyt@gmail.com>
Date:   Sun Oct 26 18:30:22 2025 -0400

    macOS: fix homebrew / qt 6.9.3 issue where qt plugins cannot be located
    
      Due to a change in the homebrew qt 6.9.3, myth programs may have
      issues locating the install directory for the Qt Plugins.
      Specifically, the QtSQL plugins. Having cmake dynamically set
      QT_PLUGIN_PATH and QT_QPA_PLATFORM_PLUGIN_PATH resolves the issue.
    
    (cherry picked from commit 30f1de7b7ce0434c55f84ef95aa1f8bf8a7347dd)

commit 855f885c3dc87d60a50c55ccd6e68df2a4ae583b
Author: Klaas de Waal <klaas@kldo.nl>
Date:   Mon Oct 27 15:53:58 2025 +0100

    Empty Chapter menu in video playback
    
    The list of node children can apparently have null values.
    Search for the menu entry by checking all the node children
    that have non-null values.
    Previously the code stopped checking at the first null value.
    This fixes the regression introduced by commit 9297955.
    
    Refs #1194
    
    (cherry picked from commit 6e59ac13a43abf80265fd6a7a8ca5a3ba842cea7)

commit 18163eb5204a2762ce3b5eeec2022576a8ead0e5
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Sep 25 14:00:55 2025 -0400

    Update for recent C++ library removal of std::chrono::__is_duration.
    
    Early C++ libraries used __is_duration<T>::value to determine if a
    type was derived from std::chrono::duration, and then later introduced
    the shorter form __is_duration_v<T>.  Clang version 20 has removed the
    original so MythTV no longer compiles.  Update the MythTV code to
    prefer the newer form for determining if something is a duration.
    
    Gcc libc++ 20240719 doesn't have __is_duration_v<T>, and 20240904
    does.
    
    The need for __has_include is unfortunate but necessary, as the
    mythconfig.h file is in a different location depending on whether the
    file being compiled lives under the mythtv or mythplugins directory.
    These includes can be removed once all supported platforms have been
    upgraded to a libc++/libcxx that has __is_duration_v<T>.
    
    (cherry picked from commit 7c781b38604e2d4751f427c0527cc73d75bf7ca6)

commit f47ef11a380c72914535c830b21314569933343e
Author: Scott Theisen <scott.the.elm@gmail.com>
Date:   Wed Oct 8 19:27:59 2025 -0400

    mythtranscode: fix FIFO mode
    
    The check incorrectly required m_avfMode to always be true, but
    this is not required for FIFO output.
    
    (cherry picked from commit cd21d280aef0cf9a3a958a8eb8c3d630ebc38ce7)

commit 985fbdacee8a7a930e30563c3edfba5a8fe94d3b
Author: Roland Ernst <rcrernst@gmail.com>
Date:   Sun Oct 5 19:14:58 2025 +0200

    Fix datetime.replace(tzinfo=None) with Python 3.13
    
    Python 3.13 fixed [gh-89039]. Now `datetime.__new__()` is also
    used for `datetime.replace()`, which is called with `tzinfo=None` to
    convert a time-zone aware instance to a _naive_ instance. But
    `__new__()` replaces `tzinfo=None` with `loczlTZ()`, which just re-adds
    the offset back.
    This breaks calling `database.update()` on all database records, which
    use timestamps as a datetime with the wrong timezone offset is used.
    
    Add a new singleton LTZ and use that instead of `tzinfo=None` to keep
    the old behavior to get the local timezone by default.
    
    Fixes: #1179
    [gh-89039]: https://github.com/python/cpython/issues/89039
    
    Many thanks to github user @pmhahn providing the patch.
    
    (cherry picked from commit fcb36c32d13f6a69e728bb8ede6d36f7d71c1fd3)

commit 7f79cf78b319c82ed770d224dfd8beb04d553639
Author: Klaas de Waal <klaas@kldo.nl>
Date:   Sun Aug 24 10:13:20 2025 +0200

    Always update video bottom info panel text
    
    When browsing the list of videos the bottom info panel is updated
    with the details of the selected video.
    In commit 53d32e054c9f8dbbc61969cd589b1b9500100aef this update was
    made conditional on the IsVisible() status of the ButtonListItem.
    But, after a DOWN on the bottom item of the list the next item is
    still invisible when the call to update the bottom info is made.
    The added check on IsVisible prevents the bottom info being updated.
    This commit removes the check on IsVisible and thus restores the
    behavior from before commit 53d32e054c9f8dbbc61969cd589b1b9500100aef.
    
    Refs #1172
    
    (cherry picked from commit 9c62f6b4b750154ec2e0e5700c46a4ad25d19b16)

commit 931474b3a0c98aa80ceb7903359af2024726156e
Author: John Hoyt <john.hoyt@gmail.com>
Date:   Sat Aug 9 10:52:56 2025 -0400

    macOS: fix missing qt framework issue during app packaging
    
      Add code to locate and correct missing Qt framworks "skipped" by
      macdeployqt when bundling the mythfrontend app.  This issue only
      occurs on homebrew based builds that use QtWebengine.
    
      For some reason, QtQuickWidgets.framework does not get
      copied into the app framework by macdeployqt. This update searches
      for any missing Qt frameworks, copies the missing frameworks into the
      app bundle, and corrects any libraries contained in the framework.
    
    (cherry picked from commit a50b984629ff776df5f65c103004862a57589f15)

commit 958895d7d1df3324604c91ca4146e3f83a696a9c
Author: David Engel <dengel@mythtv.org>
Date:   Fri Aug 1 15:32:59 2025 -0500

    Update minimum MySQL version requirement to 8.0.
    
    (cherry picked from commit f77d0b322737c458d3363f9b374ae1279ee7f46b)

commit 0a868b015e7346a9156a389acbbe395ec2e1aa24
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Thu Jul 10 14:35:37 2025 -0400

    Fix for services that download a file
    
    The services that download a file (Content and Guide), fail if they are
    the first service called after a restart of mythbackend. The QFileInfo
    class is not registered with Qt Metadata, causing the failure. Add a
    registration of QFileInfo in initialization of Content and Guide
    services to resolve this.
    
    Refs #1144
    
    (cherry picked from commit 20888721af431deea96a41fe14660ef0161fba88)

commit 5f093cd9776f65826c0bef026a5d7ad3b0af5f21
Author: Scott Theisen <36139124+ulmus-scott@users.noreply.github.com>
Date:   Mon Jun 2 06:55:42 2025 -0400

    fix ANSI/CTA-708 DTV Closed Captions decoding (#1127)
    
    ANSI/CTA-708-E S-2023 page 14 footnote 4:
    "The presence of padding should not be interpreted as terminating the CCP."
    The fix from f8312c35f01980be8d10a048cc23220f11864211 is incorrect.
    
    Instead, check if the CCP is full after adding data and parse immediately.
    
    caption_channel_packet::packet_data_size is 127 for packet_size_code = 0,
    which parse_cc_packet() will still incorrectly skip.
    
    The addition of m_partialPacket.size > 0 prevents data from being added to a
    packet before a header has been added.  size will remain 0 until a header is
    added and total_packet_size is never 0, so parse_cc_packet() will not be called
    until a header has been added.
    
    Fixes https://github.com/MythTV/mythtv/issues/1117
    
    (cherry picked from commit 2068049594030f01cafaa658e6c2b8be49c08817)

commit 399af6e1e2ab8978808c0a7d73bc4877cfea8cb6
Author: Steve Erlenborn <1751095+SteveErl@users.noreply.github.com>
Date:   Sun Jun 1 10:52:53 2025 -0500

    Fix New, Delete type mismatch (#1123)
    
    At the allocation point a MythVideoTextureOpenGL
    class was created. At the deletion point, a
    MythGLTexture was released. MythGLTexture is a
    base class for MythVideoTextureOpenGL.
    
    If you intend to delete a derived class object
    through a base class pointer, the base class must
    have a virtual destructor. This ensures that the
    correct destructor for the derived class is
    called when the object is deleted.
    
    This modification stipulates the destructor for
    MythGLTexture to be virtual. This ensures that
    the type upon deletion matches the type upon
    creation.
    
    Resolves #1121
    
    (cherry picked from commit 0fb7b1b43dd240e8627fbf18bd2a5a37e59f1f4e)

commit 70fe2731769916c0c5ce9807e0e9fbbbc41f7699
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Tue May 27 11:16:36 2025 -0400

    Make CheckSubnet thread-safe
    
    MythCoreContext::CheckSubnet can be called from multiple threads. It
    uses 2 QList objects that are not thread-safe. Protect them with a
    QMutex.
    
    This is the equivalent change to 9292a764ca in master branch.

commit 38bc1e487a3a8271acee86f43139faea999edd1a
Author: Klaas de Waal <klaas@kldo.nl>
Date:   Mon May 26 22:40:36 2025 +0200

    Clear video properties display when recording is unselected
    
    In the "Watch Recordings" page, remove the presentation of the
    video properties icon at the right/bottom corner when the
    recording is not selected anymore.
    
    Refs #1115
    
    (cherry picked from commit 537bb5dcd04d9d8abdb73a6b8562cc056aee9ee9)

commit e12af6514fa9a068f3312f8e8ee0b79db06c4729
Author: Roland Ernst <rcrernst@gmail.com>
Date:   Sun May 25 12:53:54 2025 +0200

    Fix access to DVBH-CAM after commit 728caf2
    
    This commit 728caf2 named
    "tidy: Move assignments to constructor member initialization list. (libs 2)"
    added an unwanted change in the initialisation of the variable
    `m_infoLengthPos` in the file dvbci.cpp.
    Reverting this code change gives back proper decrypting of live-tv.
    
    Refs MythTV#1107
    
    (cherry picked from commit dbdb8a8ab73687aee1c254ae2f0c1ca36a358de0)
    (cherry picked from commit 2c0711afa7171ff7bed9a9de198369e775b5cff7)

commit 886d3561fc63836f0b9cb021c61c91e305270b99
Author: Roland Ernst <rcrernst@gmail.com>
Date:   Mon May 12 22:47:09 2025 +0200

    Python: Respect `fold` attribute provided by `datetime.tzinfo`
    
    Python3.13 takes the `fold` attribute into account when crating various
    `MythTV.datetime` objects. This attribute is used to disambiguate
    `datetime` objects during transition from daylight saving time
    to standard time, where the local time stamp occurs twice.
    
    Found in the changelog of pyzthon 3.13:
    gh-89039: When replace() method is called on a subclass of datetime, date or time,
    properly call derived constructor. Previously, only the base class’s constructor was called.
    Also, make sure to pass non-zero fold values when creating subclasses in various methods.
    Previously, fold was silently ignored.
    
    Refs: MythTV.#1083
    (cherry picked from commit b577909fdc40653ff23b89125df662d2dfb1349e)

commit c7661d4cf1dc2c6646da0ef1f2c2c1847488054c
Author: Steve Erlenborn <1751095+SteveErl@users.noreply.github.com>
Date:   Sat May 17 10:54:11 2025 -0500

    Close file leak in PulseAudio output handler (#1098)
    
    According to the PulseAudio Destruction documentation,
    
    "When the PulseAudio connection has been terminated,
    the thread must be stopped and the resources freed.
    Stopping the thread is done using
    pa_threaded_mainloop_stop(), which must be called
    without the lock (see below) held. When that
    function returns, the thread is stopped and
    the pa_threaded_mainloop object can be freed using
    pa_threaded_mainloop_free()."
    
    The code in audiooutputpulse.cpp called
    pa_threaded_mainloop_stop(), but never called
    pa_threaded_mainloop_free(). That missing call is
    what frees up allocated resources like FIFO files.
    
    The missing calls to pa_threaded_mainloop_free() have
    been added in this modification.
    
    Resolves: #1095
    (cherry picked from commit b1bb52dd86ced27f4fa713b60109351a4f7f19d0)

commit 1f9b23e69e8401263c875fba8442c3de6dbed91d
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Fri May 16 11:43:41 2025 -0400

    web app rebuild

commit 2a14f88df89fcf68039fb56eafe93b57c4710b04
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Sat May 10 14:24:38 2025 -0400

    web-app setup: Add missing Guide Data Program options
    
    Setup, General, Program Schedule Downloading Options was missing the
    mythfilldatabase settings and start time options. Now added.
    
    Refs #1086
    
    (cherry picked from commit 018bae7941340130c77f687c631ac52457826bd4)

commit 2c184be3c90c95689b25d89c206d1a0457cb1d40
Author: Dadeos <Dadeos@users.noreply.github.com>
Date:   Thu May 15 11:14:51 2025 +0100

    DBus screensaver always report being awake
    
    Always return false for the Asleep function of the DBus screensaver.
    Remove the inhibite state bookkeeping because that is not used anymore.
    The Asleep function is only relevant for the X11 screensaver.
    The value of this function is used in mythinputdevicehandler.cpp to discard input events when the screen is powered off. This is only useful with the X11 screensaver; the DBus screensaver has the state "inhibited" and "not inhibited" but it does not say anything about the screen actually being saved or not.
    
    Fixes #1064
    
    (cherry picked from commit a52127704d7c80a298a803cd82e2435466742c01)

commit 9e66243fbd8296558cde0d60c3ab3504c52dc5e0
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Sat Apr 26 17:52:12 2025 -0400

    Fix LiveTV programs stuck in "Recording" status after recording ends
    
    Bug: After a recording in "LiveTV" recording group ends, it still shows
    "Recording" status in mythfrontend.
    Fix: Remove check for "LiveTV" before sending UPDATE_RECORDING_STATUS
    message in FinishedRecording method.
    
    (cherry picked from commit 08c5777b3da60449ed813be4663cdb83f2236c25)

commit 0caa8c0df1b1db962b75b64547f0349eb62f32dd
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Fri Apr 25 18:01:13 2025 -0400

    Fix SSL in built in web server
    
    Incorrect usage of QObject::sender() to pass in server type resulted in
    all server requests being treated an non-ssl. Moved the
    QObject::sender() call and changed the format of the queue to pass
    correct SSL indicator.
    
    Refs #1058
    
    (cherry picked from commit a22da623c15810da4c5f3126eedf02c42a796d74)

commit eaa307f0b6f0ddef4f62981617ba59d6bbd0b103
Author: Klaas de Waal <klaas@kldo.nl>
Date:   Mon Apr 21 11:09:19 2025 +0200

    Use QChar for satellite channel polarity
    
    Revert a change done in commit 80ebec6 where the character representing
    channel polarity ('H' or 'h' or 'V' or 'v') was changed into
    the numerical value of the character.
    
    Refs #1070
    Refs #1071
    
    (cherry picked from commit cf33bfbbcbcde408d4cab09e273e41310650df20)

commit b23c98df533b441d213b68cf1510cd8cfac5454b
Author: John Hoyt <john.hoyt@gmail.com>
Date:   Sun Apr 20 09:25:40 2025 -0400

    cmake: correct darwin package manager lib path
    
      Correct the PKGMGR_LIB_DIR variable to point to the correct path
      for both macports and homebrew.  The fixed state hard coded this
      path to ${MACPORTS_PREFIX}/lib which resolves to /lib on homebrew.
    
    (cherry picked from commit 49548169cfbdad97c43323d66848d42b4582a869)

commit 2099efbe211e72c915ae20498e45aa2b06f5c0d1
Author: David Engel <dengel@mythtv.org>
Date:   Fri Apr 18 14:37:27 2025 -0500

    Work around a timeout and eventual playback exit during
    fast-forward/rewind.
    
    Something changed, I think around the time of the ffmpeg 7.1 update,
    that causes fast-forward/rewind to sometimes hang waiting for decoded
    video buffers.  I suspect an error in the video buffer life cycle but
    I've so far been unable to pin it down.  For the time being, work
    around the problem by clearing the render one flag when we warn about
    waiting too long for buffers.
    
    (cherry picked from commit 186318c8350430b9bcf4d6be720f40af6e036d0b)

commit 4289cf86b03c0ee0220589b7c27b6acab2487b3c
Author: David Hampton <mythtv@love2code.net>
Date:   Tue Apr 1 09:08:30 2025 -0400

    Fix Qt6 compilation on Fedora rawhide.
    
    The latest version of Qt6 has removed some overrides for QString::arg
    and Qchar::Qchar causing compilation to break.  Change the existing
    casts on these function calls to use a different override that still
    exists.
    
    (cherry picked from commit 80ebec6e2760f5d2a5faccdf3904cb35514cb318)

commit 18acab149c59a9ec45cd556eaa54e09cc25b1b0f
Author: David Hampton <mythtv@love2code.net>
Date:   Fri Mar 14 09:40:53 2025 -0400

    cmake: Fix osx compile without virtual environment.
    
    (cherry picked from commit fbf4c1482e10642b0e280cebb20c9866e6fcd1ff)

commit 8172fa23ff4cd9a8fbca95d07f177572596e93cd
Author: David Hampton <mythtv@love2code.net>
Date:   Fri Mar 14 08:28:52 2025 -0400

    Fix building on OSX with the most recent version of mesa.
    
    Older mesa wasn't detected by configure on OSX, and therefore MythTV
    only built in support for VideoToolbox.  The latest mesa is detected
    and MythTV tries to build support for both VideoToolbox and OpenGL,
    which fails.  No idea why this changed, but the cause of the compile
    failures is that EGLNativeDisplayType is defined as "void*" on most
    platforms, but its defined as "int" on Apple.  This conflicts with
    MythTV's hard coded signature for the EGLGETPLATFORMDISPLAY function.
    Providing a variant signature for Apple solves the compilation
    problem.
    
    (cherry picked from commit e6b358ed01283099934bc0de1318e87360342fa4)

commit 30ba688773852d3f8ad44dd7ceb1b6634ca7ea4e
Author: Bill Meek <bmeek@mythtv.org>
Date:   Fri Mar 14 13:36:52 2025 -0500

    Services API: change the JobAllow* check to log only
    
    Switch to LOG_NOTICE and remove the failure return.
    
    Fixes: #1062
    (cherry picked from commit 7baf1a1e70c73e8bd153cfb37b8f69a63ce7bdca)

commit 595de795884c11165f819768af79f9de25f96cb4
Author: Peter Bennett <pbennett@mythtv.org>
Date:   Wed Mar 12 11:28:44 2025 -0400

    Fix version.sh error
    
    Fix Incorrect syntax for if test
    
    (cherry picked from commit 33148544d8091fe0b1e70d04ab0a662db3ed6176)

commit 9346914b84506db8a5d4ac2444b03c6d2b69b204
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 10:42:36 2025 -0500

    Use accessor functions instead of directly including version.h.
    
    (cherry picked from commit db54767322f5e513af62ee15536543820a6dcc19)

commit acaf49f07f91f5e331b1b63a01ecc1adfb103235
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 10:40:42 2025 -0500

    cmake: Recreate version.h with every compile.
    
    Call the version.sh script every time "cmake --build" is run to ensure
    that version.h always contains the correct git information.
    
    (cherry picked from commit d73d17abf37d8e95b8234abbcb1f11dc5fff1ce2)

commit bfbb4b496c0d5f6652521fa9a5f250707b75ab40
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 10:40:42 2025 -0500

    cmake: Show install output as it happens.
    
    Don't collect the output until and then display it all at the end of
    the install stage.  Display it as it happens.
    
    (cherry picked from commit 9cc42d1bf961c093d8dd0134f714124ff44cf230)

commit 6cff4d93a0569074506db02eb6ea713650710a09
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 09:18:31 2025 -0500

    Add a quiet flag to version.sh script.
    
    (cherry picked from commit 051739486dd283dad6e04fe9b59091104664527b)

commit 8da6172dcb29e46f4ac29d9778091e7ce2ac6462
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 09:08:30 2025 -0500

    Eliminate spurious output from version.sh.
    
    When checking the validity of the source version, the intermediate
    result of a test command is accidentally printed to the console.
    Store this intermediate result into a variable and test the variable.
    This prevents spurious output.
    
    (cherry picked from commit ce5e2ab4d417b50ff079011d2c4ee21c02b1c2b6)

commit c778dfd6087bb8496648acf6f3c5491a3be224b1
Author: David Hampton <mythtv@love2code.net>
Date:   Thu Feb 27 09:05:28 2025 -0500

    Add output directory argument to the version.sh script.
    
    If this optional argument is supplied, the new version.h file will be
    placed under that directory instead of the source directory.  This
    will allow cmake to use the script and put the resulting file into a
    build directory.
    
    (cherry picked from commit 4779f51e8f534beb78a38a1b987b1dce56e34143)

commit 306fda12aa02e90882406927156ff2dc11642fc3
Author: Timo Rothenpieler <timo@rothenpieler.org>
Date:   Tue Feb 25 19:39:43 2025 +0100

    avcodec/cuviddec: correctly handle buffer size and status when deinterlacing
    
    Signed-off-by: Peter Bennett <pbennett@mythtv.org>
    (cherry picked from commit e59ad8a4fe7ec021f1118e78a77b5aadca6d8a42)

commit cbbef8756457af2c64e2c42c1faf6e35d97aceb2
Author: Scott Theisen <scott.the.elm@gmail.com>
Date:   Tue Feb 25 21:44:46 2025 -0500

    Revert "libavcodec: increase CUVID_DEFAULT_NUM_SURFACES"
    
    This reverts commit 6ebe909c0d98f7d200666162730dd1ef25d3c984.
    
    Signed-off-by: Peter Bennett <pbennett@mythtv.org>
    (cherry picked from commit 997d477f6eae25e25fc0b72d30ead229f69ed3ee)

commit ec351fd5c48bd90567825f5aa7107cd8571a8dcb
Author: David Engel <dengel@mythtv.org>
Date:   Sun Mar 2 17:13:32 2025 -0600

    Fix bad en_us translation in statusbox.
    
    (cherry picked from commit dc9b7122e45fcbdc2529aa08f546cb1674084e83)

commit 70cb82bc9ae06f59142efa7f047e2a73adfbc7d8
Author: Bill Meek <bmeek@mythtv.org>
Date:   Thu Feb 27 20:20:08 2025 -0600

    mytharchive: fix use of reserved keywords for C23
    
    Testing with Fedora rawhide, builds fail with:
    
        error: cannot use keyword 'false' as enumeration constant
        typedef enum { false = 0, true = 1 }    bool;
                       ^~~~~
        note: 'false' is a keyword with '-std=c23' onwards
        error: expected ';', identifier or '(' before 'bool'
        typedef enum { false = 0, true = 1 }    bool;
                                                ^~~~
    
    (cherry picked from commit bc4476e671f449ef26f19fd6cedda8e98dcc043b)
