mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 00:08:39 +09:00
Issue #1905 - Part 4b - Fix issue loading the profile and saving changes to the profile. Based on the following Mozilla bugs: 1659904, 1659905 and 1659077.
This commit is contained in:
parent
35ba45aa32
commit
7e63a3f440
5 changed files with 24 additions and 13 deletions
|
|
@ -711,10 +711,10 @@ static const dom::ConstantSpec gLibcProperties[] =
|
|||
// Under MacOSX, to avoid using deprecated functions that do not
|
||||
// match the constants we define in this object (including
|
||||
// |sizeof|/|offsetof| stuff, but not only), for a number of
|
||||
// functions, we need to adapt the name of the symbols we are using,
|
||||
// whenever macro _DARWIN_FEATURE_64_BIT_INODE is set. We export
|
||||
// this value to be able to do so from JavaScript.
|
||||
#if defined(_DARWIN_FEATURE_64_BIT_INODE)
|
||||
// functions, we need to use functions with a $INODE64 suffix.
|
||||
// That is true on Intel-based mac when the _DARWIN_FEATURE_64_BIT_INODE
|
||||
// macro is set. But not on Apple Silicon.
|
||||
#if defined(_DARWIN_FEATURE_64_BIT_INODE) && !defined(__aarch64__)
|
||||
{ "_DARWIN_FEATURE_64_BIT_INODE", JS::Int32Value(1) },
|
||||
#endif // defined(_DARWIN_FEATURE_64_BIT_INODE)
|
||||
|
||||
|
|
|
|||
|
|
@ -6708,12 +6708,15 @@ PrepareCIF(JSContext* cx,
|
|||
if (!rtype)
|
||||
return false;
|
||||
|
||||
ffi_status status =
|
||||
ffi_prep_cif(&fninfo->mCIF,
|
||||
abi,
|
||||
fninfo->mFFITypes.length(),
|
||||
rtype,
|
||||
fninfo->mFFITypes.begin());
|
||||
ffi_status status;
|
||||
if (fninfo->mIsVariadic) {
|
||||
status = ffi_prep_cif_var(&fninfo->mCIF, abi, fninfo->mArgTypes.length(),
|
||||
fninfo->mFFITypes.length(), rtype,
|
||||
fninfo->mFFITypes.begin());
|
||||
} else {
|
||||
status = ffi_prep_cif(&fninfo->mCIF, abi, fninfo->mFFITypes.length(), rtype,
|
||||
fninfo->mFFITypes.begin());
|
||||
}
|
||||
|
||||
switch (status) {
|
||||
case FFI_OK:
|
||||
|
|
|
|||
|
|
@ -1130,6 +1130,14 @@ var declareFFI = function declareFFI(lib, symbol, abi,
|
|||
throw new TypeError("Missing type for argument " + ( i - 3 ) +
|
||||
" of symbol " + symbol);
|
||||
}
|
||||
// Ellipsis for variadic arguments.
|
||||
if (current == "...") {
|
||||
if (i != arguments.length - 1) {
|
||||
throw new TypeError("Variadic ellipsis must be the last argument");
|
||||
}
|
||||
signature.push(current);
|
||||
continue;
|
||||
}
|
||||
if (!current.implementation) {
|
||||
throw new TypeError("Missing implementation for argument " + (i - 3)
|
||||
+ " of symbol " + symbol
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@
|
|||
/*return*/ Type.negativeone_or_fd,
|
||||
/*path*/ Type.path,
|
||||
/*oflags*/ Type.int,
|
||||
/*mode*/ Type.int);
|
||||
"...");
|
||||
|
||||
if (OS.Constants.Sys.Name == "NetBSD") {
|
||||
libc.declareLazyFFI(SysFile, "opendir",
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@
|
|||
flags |= Const.O_APPEND;
|
||||
}
|
||||
}
|
||||
return error_or_file(UnixFile.open(path, flags, omode), path);
|
||||
return error_or_file(UnixFile.open(path, flags, ctypes.int(omode)), path);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -675,7 +675,7 @@
|
|||
|
||||
// If necessary, fail if the destination file exists
|
||||
if (options.noOverwrite) {
|
||||
let fd = UnixFile.open(destPath, Const.O_RDONLY, 0);
|
||||
let fd = UnixFile.open(destPath, Const.O_RDONLY);
|
||||
if (fd != -1) {
|
||||
fd.dispose();
|
||||
// The file exists and we have access
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue