public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "enometh at meer dot net" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug libstdc++/101510] std::filesystem::create_directory  on an existing symlink to a directory
Date: Tue, 20 Jul 2021 16:20:29 +0000	[thread overview]
Message-ID: <bug-101510-4-HlwnGbzssR@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-101510-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101510

--- Comment #7 from Madhu <enometh at meer dot net> ---
*  "redi at gcc dot gnu.org"
<bug-101510-34102-7EIpFELo9R@http.gcc.gnu.org/bugzilla/>
Wrote on Tue, 20 Jul 2021 16:00:55 +0000
>> I was going by the usage from databasePath() in
>> https://github.com/WebKit/WebKit/blob/main/Source/WebKit/NetworkProcess/
>> WebStorage/LocalStorageDatabaseTracker.cpp#L142
>> which calls ensureDatabaseDirectoryExists() in
>> https://github.com/WebKit/WebKit/blob/main/Source/WebCore/platform/sql/
>> SQLiteFileSystem.cpp#L59
>> which calls makeAllDirectories()
>> https://github.com/WebKit/WebKit/blob/main/Source/WTF/wtf/FileSystem.cpp#L733
>>
>> The check is for only on the boolean value of ec, which is wrong
>> according to the spec, Thanks!
>
> That looks correct to me. It's the same as the example as I showed above.
>
> If ec does not have a value, it means no error occurred. That means either the
> directory was created, or already exists.
>
>> Instead of precipitately filing the bug here I should have filed it
>> with WebKit.
>
> Are you *actually* seeing incorrect behaviour, or just concluding
> there is a bug by reading the code?

[There is a problem and I misread the code at first.]

The databasePath() function in the first reference consumes a boolean
value which is false and incorrectly assumes there is an error.  (it
correctly reports that the directory could not be created, but then it
assumes that the directory does not exist.)

This is incorrect behaviour when the name does resolve to a directory

The semantics really mean that the boolean value of ec should be
ignored for this usage pattern where you want to ensure a directory
exists.

  parent reply	other threads:[~2021-07-20 16:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-19 12:35 [Bug c++/101510] New: " enometh at meer dot net
2021-07-19 22:44 ` [Bug libstdc++/101510] " redi at gcc dot gnu.org
2021-07-20 11:43 ` redi at gcc dot gnu.org
2021-07-20 11:46 ` redi at gcc dot gnu.org
2021-07-20 11:58 ` cvs-commit at gcc dot gnu.org
2021-07-20 12:01 ` redi at gcc dot gnu.org
2021-07-20 15:55 ` enometh at meer dot net
2021-07-20 16:00 ` redi at gcc dot gnu.org
2021-07-20 16:20 ` enometh at meer dot net [this message]
2021-07-20 16:25 ` redi at gcc dot gnu.org
2021-07-20 16:40 ` enometh at meer dot net
2021-07-20 16:53 ` redi at gcc dot gnu.org
2021-07-20 16:57 ` enometh at meer dot net
2021-07-20 16:58 ` redi at gcc dot gnu.org
2021-07-20 16:59 ` redi at gcc dot gnu.org
2021-07-20 17:05 ` enometh at meer dot net
2021-07-20 19:35 ` cvs-commit at gcc dot gnu.org
2021-07-20 19:38 ` redi at gcc dot gnu.org
2021-07-21  1:47 ` enometh at meer dot net
2021-08-11 15:42 ` cvs-commit at gcc dot gnu.org
2021-08-11 15:42 ` cvs-commit at gcc dot gnu.org
2021-08-11 16:35 ` cvs-commit at gcc dot gnu.org
2021-08-11 16:35 ` cvs-commit at gcc dot gnu.org
2021-08-11 22:50 ` cvs-commit at gcc dot gnu.org
2021-08-11 22:50 ` cvs-commit at gcc dot gnu.org
2021-08-11 22:53 ` redi at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-101510-4-HlwnGbzssR@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).