-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fs: fix crash when path contains %
#55171
Conversation
1f24267
to
6c5b1c2
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #55171 +/- ##
==========================================
+ Coverage 88.41% 88.42% +0.01%
==========================================
Files 652 652
Lines 186796 186901 +105
Branches 36103 36072 -31
==========================================
+ Hits 165154 165266 +112
+ Misses 14909 14889 -20
- Partials 6733 6746 +13
|
6c5b1c2
to
de93001
Compare
/cc @nodejs/fs can I get some reviews? |
@@ -3127,6 +3127,44 @@ static void GetFormatOfExtensionlessFile( | |||
return args.GetReturnValue().Set(EXTENSIONLESS_FORMAT_JAVASCRIPT); | |||
} | |||
|
|||
#ifdef _WIN32 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
libuv exports a number of similar functions. Before adding this to Node, do any of these work for your use case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don’t know, and I don’t have a Windows machine to try them out :/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can help verify. I didn't find any unicode utils in node, so was a bit surprised actually. Now it makes sense since it's from libuv.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I played around with it. There are some boilerplates for that to work. One example how it can be used by node is this libuv's util function, which is, unfortunately, not exposed. Node would have to implement that or something similar, and pass in c_str
pointers when calling it.
What we have here, IMHO, is actually more suitable for node as it's operates directly on std::string
We can certainly take this out to a util file, e.g. util.cc
, to make it more proper.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does it actually make sense to move it to util.cc
? Given that it's path-only, node_file.cc
doesn't seem out of place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense. I was thinking about like libuv to have a windows specific file to place these, namely util_win.cc but that would be a different PR. I think it's fine to have these here for now.
Thanks for pushing this through 👍 Looks much nicer. |
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: nodejs#55171 Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
3068487
to
56e5bd8
Compare
Landed in 56e5bd8 |
1 similar comment
Landed in 56e5bd8 |
Write After compiling, The test (
and
The following issue has also been tested and no problem @jazelly Could you try this instead? |
This comment was marked as outdated.
This comment was marked as outdated.
@ShenHongFei please ignore my previous comment, I applied the diff and got segfault at
|
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: #55171 Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: nodejs#55171 Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Without this patch, here's the crash: