From 15b8f717de5ea78d9e303e46843742ae5a446f8d Mon Sep 17 00:00:00 2001 From: Varadraj75 Date: Sun, 8 Mar 2026 00:40:32 +0530 Subject: [PATCH 1/2] fix: flush pending EIT sections in EPG_free() before freeing buffers --- src/lib_ccx/ts_tables_epg.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/lib_ccx/ts_tables_epg.c b/src/lib_ccx/ts_tables_epg.c index 79bc58171..1720479d7 100644 --- a/src/lib_ccx/ts_tables_epg.c +++ b/src/lib_ccx/ts_tables_epg.c @@ -1630,6 +1630,24 @@ void EPG_free(struct lib_ccx_ctx *ctx) { if (ctx->epg_inited) { + // Flush any pending EIT sections not triggered by a subsequent + // payload_start_indicator packet (e.g. last section in stream) + for (int i = 0; i <= 0xfff; i++) + { + if (ctx->epg_buffers[i].buffer != NULL && ctx->epg_buffers[i].ccounter > 0) + { + if (ctx->epg_buffers[i].buffer_length > 0) + { + unsigned char pointer_field = (unsigned char)ctx->epg_buffers[i].buffer[0]; + if ((size_t)pointer_field + 1 < (size_t)ctx->epg_buffers[i].buffer_length) + { + EPG_parse_table(ctx, ctx->epg_buffers[i].buffer, ctx->epg_buffers[i].buffer_length); + } + } + free(ctx->epg_buffers[i].buffer); + ctx->epg_buffers[i].buffer = NULL; + } + } if (ccx_options.xmltv == 2 || ccx_options.xmltv == 3 || ccx_options.send_to_srv) { if (ccx_options.send_to_srv) From 3d0ce97678d5d0738aba00fcb049ccaf8c6ed7ba Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Mon, 16 Mar 2026 20:50:56 -0700 Subject: [PATCH 2/2] ci: add dual build artifacts to compare C vs Rust code paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add -min-rust flag to linux/build that passes -DDISABLE_RUST to gcc, causing switchable modules (DTVCC, demuxer, AVC, networking, hex utils) to use their C implementations instead of Rust. The Rust library still compiles since many modules are Rust-only. The Linux CI now produces two artifacts: - "CCExtractor Linux build" — min Rust (C paths where available) - "CCExtractor Linux build (with migrations)" — max Rust Both should produce identical output on the sample platform. If they diverge, it means a Rust port introduced a behavioral difference. The sample platform will need a corresponding update to recognize and test the new "with migrations" artifact. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build_linux.yml | 25 ++++++++++++++++++++++++- linux/build | 5 +++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 6d684d045..290e0a6f0 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -33,7 +33,7 @@ jobs: run: sudo apt update && sudo apt-get install libgpac-dev libtesseract-dev libavcodec-dev libavdevice-dev libx11-dev libxcb1-dev libxcb-shm0-dev - uses: actions/checkout@v6 - name: build - run: ./build -hardsubx + run: ./build -hardsubx -min-rust working-directory: ./linux - name: Display version information run: ./ccextractor --version @@ -49,6 +49,29 @@ jobs: with: name: CCExtractor Linux build path: ./linux/artifacts + build_shell_migrations: + runs-on: ubuntu-latest + steps: + - name: Install dependencies + run: sudo apt update && sudo apt-get install libgpac-dev libtesseract-dev libavcodec-dev libavdevice-dev libx11-dev libxcb1-dev libxcb-shm0-dev + - uses: actions/checkout@v6 + - name: build + run: ./build -hardsubx + working-directory: ./linux + - name: Display version information + run: ./ccextractor --version + working-directory: ./linux + - name: Prepare artifacts + run: mkdir ./linux/artifacts + - name: Copy release artifact + run: cp ./linux/ccextractor ./linux/artifacts/ + # NOTE: The sample-platform test runner (CCExtractor/sample-platform) + # matches artifact names exactly. Update Artifact_names in + # mod_ci/controllers.py there if you rename this artifact. + - uses: actions/upload-artifact@v7 + with: + name: CCExtractor Linux build (with migrations) + path: ./linux/artifacts build_autoconf: runs-on: ubuntu-latest steps: diff --git a/linux/build b/linux/build index 4d498ca09..aa481f7d2 100755 --- a/linux/build +++ b/linux/build @@ -24,6 +24,11 @@ while [[ $# -gt 0 ]]; do BLD_LINKER="$BLD_LINKER -lswscale -lavutil -pthread -lavformat -lavcodec -lavfilter -lxcb-shm -lxcb -lX11 -llzma -lswresample" shift ;; + -min-rust) + MIN_RUST=true + BLD_FLAGS="$BLD_FLAGS -DDISABLE_RUST" + shift + ;; -system-libs) USE_SYSTEM_LIBS=true shift