@@ -4099,6 +4099,9 @@ ClockFreeScan(
4099
4099
}
4100
4100
else {
4101
4101
yySecondOfDay = yydate .localSeconds % SECONDS_PER_DAY ;
4102
+ if (yySecondOfDay < 0 ) { /* compiler fix for signed-mod */
4103
+ yySecondOfDay += SECONDS_PER_DAY ;
4104
+ }
4102
4105
}
4103
4106
4104
4107
/*
@@ -4169,10 +4172,10 @@ ClockCalcRelTime(
4169
4172
yyMonth += yyRelMonth - 1 ;
4170
4173
yyYear += yyMonth / 12 ;
4171
4174
m = yyMonth % 12 ;
4172
- /* compiler fix for negative offs - wrap y, m = (0, -1) -> (-1, 11) */
4175
+ /* compiler fix for signed-mod - wrap y, m = (0, -1) -> (-1, 11) */
4173
4176
if (m < 0 ) {
4177
+ m += 12 ;
4174
4178
yyYear -- ;
4175
- m = 12 + m ;
4176
4179
}
4177
4180
yyMonth = m + 1 ;
4178
4181
@@ -4214,7 +4217,11 @@ ClockCalcRelTime(
4214
4217
4215
4218
yyRelDay += newSecs / SECONDS_PER_DAY ;
4216
4219
yySecondOfDay = 0 ;
4217
- yyRelSeconds = newSecs % SECONDS_PER_DAY ;
4220
+ yyRelSeconds = (newSecs %= SECONDS_PER_DAY );
4221
+ if (newSecs < 0 ) { /* compiler fix for signed-mod */
4222
+ yyRelSeconds += SECONDS_PER_DAY ;
4223
+ yyRelDay -- ;
4224
+ }
4218
4225
4219
4226
goto repeat_rel ;
4220
4227
}
@@ -4315,8 +4322,8 @@ ClockWeekdaysOffs(
4315
4322
offs = offs % 5 ;
4316
4323
/* compiler fix for negative offs - wrap (0, -1) -> (-1, 4) */
4317
4324
if (offs < 0 ) {
4325
+ offs += 5 ;
4318
4326
weeks -- ;
4319
- offs = 5 + offs ;
4320
4327
}
4321
4328
offs += 7 * weeks ;
4322
4329
@@ -4325,7 +4332,7 @@ ClockWeekdaysOffs(
4325
4332
register int day = (offs % 7 );
4326
4333
/* compiler fix for negative offs - wrap (0, -1) -> (-1, 6) */
4327
4334
if (day < 0 ) {
4328
- day = 7 + day ;
4335
+ day + = 7 ;
4329
4336
}
4330
4337
resDayOfWeek = dayOfWeek + day ;
4331
4338
}
@@ -4442,7 +4449,7 @@ ClockAddObjCmd(
4442
4449
4443
4450
/* time together as seconds of the day */
4444
4451
yySecondOfDay = yydate .localSeconds % SECONDS_PER_DAY ;
4445
- if (yySecondOfDay < 0 ) { /* to positive result of mod */
4452
+ if (yySecondOfDay < 0 ) { /* compiler fix for signed- mod */
4446
4453
yySecondOfDay += SECONDS_PER_DAY ;
4447
4454
}
4448
4455
yySeconds = yySecondOfDay ;
0 commit comments