Re: Logs from building VDR 2.1.3 with Clang 3.4.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 08 Feb 2014 15:17:09 +0100
Klaus Schmidinger <Klaus.Schmidinger@xxxxxxx> wrote:

> On 08.02.2014 14:34, Tony Houghton wrote:
> >
> > The warning is justified, because if rid is 0 it's still there as an
> > argument, but just happens to have a value of 0. I think you can make
> > snprintf "consume" it without printing anything by adding %.d to the
> > second format string.
> 
> I'm afraid not.
> If I run
> 
> #include <stdio.h>
> int main(void)
> {
>    for (int n = 0; n < 2; n++)
>        printf(n ? "'%d-%d'\n" : "'%d%.d'\n", 1, 2);
>    return 0;
> }
> 
> I get
> 
> '12'
> '1-2'
> 
> But maybe there *is* such a format character, it just isn't "%.d".

You're right, it looks like it has to be %.s, it doesn't work with %.d.
If you used %.s you'd probably just get a type mismatch warning instead
:-(. There's nothing wrong with the way you wrote it, but I like to
enable all possible warnings and eliminate them. In this case I think
I'd just print the rid even if it's 0.

> >> Can you suggest a different way of causing a segfault at this point?
> >
> > You could add volatile as the warning suggests. Is there a good reason
> > not to use abort() instead?
> 
> The idea behind this was to allow for easy backtracking in such a case.
> I believe abort() wouldn't allow this, would it?

abort() does usually generate a useful core dump/stack backtrace IME.

_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr




[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux