[mythtv] regression with 7f00642b

Jean-Yves Avenard jyavenard at gmail.com
Fri May 11 07:53:38 UTC 2018


reverse that change and pass &gdesc.front() instead

(and &pdesc.front())

On 11 May 2018 at 08:11, Gary Buhrmaster <gary.buhrmaster at gmail.com> wrote:
> On Thu, May 10, 2018 at 7:14 PM, David Hampton <mythtv at love2code.net> wrote:
>
>> I have reverted this patch.  I don't have the resources to recreate the
>> original crash, nor the crash that was caused by Gary's patch.  I'd be
>> happy to commit a fix that anyone comes up with, but I'm afraid I can't
>> help in the creation of said fix.  Sorry.
>
> Attempt 2.
>
> This proposed patch is fundamentally ugly, but since passing
> in a NULL value to memcpy is undefined (my first thought
> was check for empty, and pass in a NULL for the pointer
> in the case the size is zero, but a memcpy from NULL,
> even with a zero length of the copy, is undefined by standards,
> that is not acceptable), this seems like an approach that will
> work for the moment and cause the side effects of the rest
> of calling the functions to continue working.
>
> It works for my test case.  I would like to hear from some
> dvb-s/s2 users.
>
>
>
>
> diff --git a/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
> b/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
> index 3120b821f6..dbe87d5899 100644
> --- a/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
> +++ b/mythtv/libs/libmythtv/mpeg/mpegtables.cpp
> @@ -445,7 +445,12 @@ ProgramMapTable* ProgramMapTable::Create(
>          uint len = global_desc[i][1] + 2;
>          gdesc.insert(gdesc.end(), global_desc[i], global_desc[i] + len);
>      }
> -    pmt->SetProgramInfo(&gdesc[0], gdesc.size());
> +
> +    // TODO: Fix this properly?
> +    if (gdesc.empty())
> +        pmt->SetProgramInfo((unsigned char *)"", 0);
> +    else
> +        pmt->SetProgramInfo(&gdesc[0], gdesc.size());
>
>      for (uint i = 0; i < count; i++)
>      {
> @@ -457,7 +462,11 @@ ProgramMapTable* ProgramMapTable::Create(
>                           prog_desc[i][j], prog_desc[i][j] + len);
>          }
>
> -        pmt->AppendStream(pids[i], types[i], &pdesc[0], pdesc.size());
> +        // TODO: Fix this properly?
> +        if (pdesc.empty())
> +            pmt->AppendStream(pids[i], types[i], (unsigned char *)"", 0);
> +        else
> +            pmt->AppendStream(pids[i], types[i], &pdesc[0], pdesc.size());
>      }
>      pmt->Finalize();
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://lists.mythtv.org/mailman/listinfo/mythtv-dev
> http://wiki.mythtv.org/Mailing_List_etiquette
> MythTV Forums: https://forum.mythtv.org


More information about the mythtv-dev mailing list