We should really mark these functions as deprecated, or add some
sort of static analysis to make it more difficult to misuse
them. It's not obvious when/where these functions
should/shouldn't be used.
On Thu, Nov 30, 2017 at 01:08:14AM +0900, Masatoshi Kimura wrote:
On Windows, the native charset is not UTF-8. Using these functions will
cause bugs such as [1] or [2].
Note that you can't simply replace all GetNative(Target|Path) to
Get(Target|Path) + NS_ConvertUTF16toUTF8. It will make things *worse*.
If you are using the path in logs or serialization formats (such as
[3]), probably it's OK to use NS_ConvertUTF16toUTF8. But if you are
passing the path to Operating system API functions or CRT functions,
probably you should change the function to a wide character variant
instead of converting the Unicode path. If you are passing the path to
some third-party libraries, read the documentation (or even the source)
of the library to determine the encoding of the path. If the library
wants the native charset, you will have to leave GetNative(Target|Path)
until the library is fixed to accept wide character paths or UTF-8 paths.
If you are not sure what to do with the Get(Target|Path) result, please
do not hesitate to ask me.
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1418325
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1420427
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=1363482
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform
--
Kris Maglione
Senior Firefox Add-ons Engineer
Mozilla Corporation
Doing linear scans over an associative array is like trying to club
someone to death with a loaded Uzi.
--Larry Wall
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform