mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-29 20:07:30 +09:00
Issue #2027 - Use reserved stack space instead of heap allocation in nsLocalFile
This should resolve the build bustage associated with c127f58ef3. Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1371279
This commit is contained in:
parent
dc04d9f795
commit
eb0c06101f
1 changed files with 9 additions and 15 deletions
|
|
@ -1715,14 +1715,13 @@ nsLocalFile::GetNativeTarget(nsACString& aResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t size = (int32_t)symStat.st_size;
|
int32_t size = (int32_t)symStat.st_size;
|
||||||
char* target = (char*)moz_xmalloc(size + 1);
|
nsAutoCString target;
|
||||||
if (!target) {
|
if (!target.SetLength(size, mozilla::fallible)) {
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t written = readlink(mPath.get(), target.BeginWriting(), size_t(size));
|
ssize_t written = readlink(mPath.get(), target.BeginWriting(), size_t(size));
|
||||||
if (written < 0) {
|
if (written < 0) {
|
||||||
free(target);
|
|
||||||
return NSRESULT_FOR_ERRNO();
|
return NSRESULT_FOR_ERRNO();
|
||||||
}
|
}
|
||||||
// Target might have changed since the lstat call, or lstat might lie, see bug
|
// Target might have changed since the lstat call, or lstat might lie, see bug
|
||||||
|
|
@ -1743,7 +1742,7 @@ nsLocalFile::GetNativeTarget(nsACString& aResult)
|
||||||
if (NS_FAILED(rv = self->GetParent(getter_AddRefs(parent)))) {
|
if (NS_FAILED(rv = self->GetParent(getter_AddRefs(parent)))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (NS_FAILED(rv = parent->AppendRelativeNativePath(nsDependentCString(target)))) {
|
if (NS_FAILED(rv = parent->AppendRelativeNativePath(target))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (NS_FAILED(rv = parent->GetNativePath(aResult))) {
|
if (NS_FAILED(rv = parent->GetNativePath(aResult))) {
|
||||||
|
|
@ -1768,17 +1767,14 @@ nsLocalFile::GetNativeTarget(nsACString& aResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t newSize = (int32_t)symStat.st_size;
|
int32_t newSize = (int32_t)symStat.st_size;
|
||||||
if (newSize > size) {
|
size = newSize;
|
||||||
char* newTarget = (char*)moz_xrealloc(target, newSize + 1);
|
nsAutoCString newTarget;
|
||||||
if (!newTarget) {
|
if (!newTarget.SetLength(size, mozilla::fallible)) {
|
||||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
target = newTarget;
|
|
||||||
size = newSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t linkLen = readlink(flatRetval.get(), target, size);
|
ssize_t linkLen = readlink(flatRetval.get(), newTarget.BeginWriting(), size);
|
||||||
if (linkLen == -1) {
|
if (linkLen == -1) {
|
||||||
rv = NSRESULT_FOR_ERRNO();
|
rv = NSRESULT_FOR_ERRNO();
|
||||||
break;
|
break;
|
||||||
|
|
@ -1789,8 +1785,6 @@ nsLocalFile::GetNativeTarget(nsACString& aResult)
|
||||||
target = newTarget;
|
target = newTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(target);
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
aResult.Truncate();
|
aResult.Truncate();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue