[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Pan-users] Weird bug with gcc-5.2's libstdc++
From: |
Zan Lynx |
Subject: |
Re: [Pan-users] Weird bug with gcc-5.2's libstdc++ |
Date: |
Wed, 12 Aug 2015 18:03:57 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 08/12/2015 04:01 PM, Holger Hoffstätte wrote:
>
> It gets weirder..
>
> On Wed, 12 Aug 2015 21:43:08 +0000, Holger Hoffstätte wrote:
>
>> On startup it can somehow no longer properly locate the ~/.pan2
>> directory and always decides to create an empty newsrc-1 in my ~.
>
> Actually it creates the newsrc-1 in the $CWD. Apparently the newly built
> binary (using it right now) works fine when I start it in the ~/.pan2
> directory, where it can find the old newsrc and all settings. Why the old
> version works without any $CWD (from an xfce launcher) remains a mystery
> for now.
>
> Suggestions welcome..
>From a quick peek at the source code I don't see how it could be a
problem with libstdc++. Instead I'd look for problems with glib.
Specifically g_get_home_dir() and g_build_filename().
Maybe your pan linked to the wrong version of glib somehow?
Or it could be a faulty assumption that the char* returned remains
valid. Most places in the code assign to a std::string which makes a
copy and is great. Other places assign to a char* and I am not sure that
the pointed-to value remains valid.
I checked and the glib docs say g_getenv()'s value remains valid only
until the next call to a list of functions.
A change in how GCC compiles could be responsible for causing a
temporary pointer to get overwritten which didn't happen with an older
compiler.
Or maybe you did something like export PAN_HOME without setting it.
Because I see in the code that PAN_HOME overrides everything else, and
it doesn't seem to check it for being blank.