Skip to content

Commit 6a12875

Browse files
committed
[SystemZ][z/OS] Fix return values in AutoConversion functions
My previous patch https://reviews.llvm.org/rG1527a5e4b4834e65678f9c30f786a2f4c17932bf incorrectly set int return values instead of std::error_code. This patch correctly returns and std::error_code value. Reviewed By: fanbo-meng, Jonathan.Crowther Differential Revision: https://reviews.llvm.org/D101904
1 parent 1ee50b4 commit 6a12875

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

llvm/lib/Support/AutoConvert.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ std::error_code llvm::disableAutoConversion(int FD) {
2323
0, // pccsid
2424
(short)FT_BINARY, // fccsid
2525
};
26-
return fcntl(FD, F_CONTROL_CVT, &Convert);
26+
if (fcntl(FD, F_CONTROL_CVT, &Convert) == -1)
27+
return std::error_code(errno, std::generic_category());
28+
return std::error_code();
2729
}
2830

2931
std::error_code llvm::enableAutoConversion(int FD) {
@@ -34,7 +36,7 @@ std::error_code llvm::enableAutoConversion(int FD) {
3436
};
3537

3638
if (fcntl(FD, F_CONTROL_CVT, &Query) == -1)
37-
return -1;
39+
return std::error_code(errno, std::generic_category());
3840

3941
Query.cvtcmd = SETCVTALL;
4042
Query.pccsid =
@@ -43,7 +45,9 @@ std::error_code llvm::enableAutoConversion(int FD) {
4345
: CCSID_UTF_8;
4446
// Assume untagged files to be IBM-1047 encoded.
4547
Query.fccsid = (Query.fccsid == FT_UNTAGGED) ? CCSID_IBM_1047 : Query.fccsid;
46-
return fcntl(FD, F_CONTROL_CVT, &Query);
48+
if (fcntl(FD, F_CONTROL_CVT, &Query) == -1)
49+
return std::error_code(errno, std::generic_category());
50+
return std::error_code();
4751
}
4852

4953
std::error_code llvm::setFileTag(int FD, int CCSID, bool Text) {
@@ -55,7 +59,9 @@ std::error_code llvm::setFileTag(int FD, int CCSID, bool Text) {
5559
Tag.ft_deferred = 0;
5660
Tag.ft_rsvflags = 0;
5761

58-
return fcntl(FD, F_SETTAG, &Tag);
62+
if (fcntl(FD, F_SETTAG, &Tag) == -1)
63+
return std::error_code(errno, std::generic_category());
64+
return std::error_code();
5965
}
6066

6167
#endif // __MVS__

0 commit comments

Comments
 (0)