Commit e0be8a5c by Ian Lance Taylor

syscall: Convert errno to error after Exitsyscall.

From-SVN: r186020
parent a0d203b1
...@@ -199,6 +199,7 @@ BEGIN { ...@@ -199,6 +199,7 @@ BEGIN {
} }
printf("c_%s(%s)\n", cfnname, args) printf("c_%s(%s)\n", cfnname, args)
seterr = 0
if (gofnresults != "") { if (gofnresults != "") {
fields = split(gofnresults, goresults, ", *") fields = split(gofnresults, goresults, ", *")
if (fields > 2) { if (fields > 2) {
...@@ -218,13 +219,17 @@ BEGIN { ...@@ -218,13 +219,17 @@ BEGIN {
gotype = goparam[2] gotype = goparam[2]
if (goname == "err") { if (goname == "err") {
print "\tvar errno Errno"
print "\tsetErrno := false"
if (cfnresult ~ /^\*/) { if (cfnresult ~ /^\*/) {
print "\tif _r == nil {" print "\tif _r == nil {"
} else { } else {
print "\tif _r < 0 {" print "\tif _r < 0 {"
} }
print "\t\terr = GetErrno()" print "\t\terrno = GetErrno()"
print "\t\tsetErrno = true"
print "\t}" print "\t}"
seterr = 1
} else if (gotype == "uintptr" && cfnresult ~ /^\*/) { } else if (gotype == "uintptr" && cfnresult ~ /^\*/) {
printf("\t%s = (%s)(unsafe.Pointer(_r))\n", goname, gotype) printf("\t%s = (%s)(unsafe.Pointer(_r))\n", goname, gotype)
} else { } else {
...@@ -243,6 +248,12 @@ BEGIN { ...@@ -243,6 +248,12 @@ BEGIN {
print "\tExitsyscall()" print "\tExitsyscall()"
} }
if (seterr) {
print "\tif setErrno {"
print "\t\terr = errno"
print "\t}"
}
if (gofnresults != "") { if (gofnresults != "") {
print "\treturn" print "\treturn"
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment