mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-05 13:27:09 +02:00
31 lines
778 B
Diff
31 lines
778 B
Diff
See also:
|
|
|
|
* https://sourceforge.net/p/gnucobol/bugs/904/
|
|
|
|
diff -ur a/gnucobol-3.2/libcob/numeric.c b/gnucobol-3.2/libcob/numeric.c
|
|
--- a/libcob/numeric.c 2023-08-18 01:07:41.324059298 +0000
|
|
+++ b/libcob/numeric.c 2023-08-18 01:31:31.294137417 +0000
|
|
@@ -2739,17 +2739,12 @@
|
|
}
|
|
} else {
|
|
unsigned char *pos = fld2 + fld2_size - 1;
|
|
- if (COB_FIELD_HAVE_SIGN (f2)) {
|
|
- if (!fld1_sign) {
|
|
- *pos &= 0xF0;
|
|
- *pos |= 0x0C;
|
|
- } else {
|
|
- *pos &= 0xF0;
|
|
- *pos |= fld1_sign;
|
|
- }
|
|
- } else {
|
|
- *pos &= 0xF0;
|
|
+ if (!COB_FIELD_HAVE_SIGN (f2)) {
|
|
*pos |= 0x0F;
|
|
+ } else if (fld1_sign == 0x0D) {
|
|
+ *pos = (*pos & 0xF0) | 0x0D;
|
|
+ } else {
|
|
+ *pos = (*pos & 0xF0) | 0x0C;
|
|
}
|
|
if (!(COB_FIELD_DIGITS (f2) & 1) /* -> digits % 2 == 0 */) {
|
|
*fld2 &= 0x0F;
|