The following is the version of the method containing the fix. File in as SystemUser and commit.
category: 'Backup and Restore'
"Sets the time at which restoreFromCurrentLogs , restoreFromArchiveLogs,
and restoreToEndOfLog: will stop.
The restore will stop at the first checkpoint which originally occurred at or
after aDateTime. If timeToRestoreTo: has not been used since
restoreFromBackup: completed, then restores will proceed to the end of the
specified transaction log(s).
An error is generated if aDateTime precedes the time of the last restored
checkpoint, as shown by restoreStatus. An error is generated if the receiver
is not in restore-from-log state.
Execution of restoreFromBackup: or commitRestore will cancel the effect of any
previous execution of timeToRestoreTo:.
If restore has stopped at a time specified by this method, then a subsequent
restore may be used to continue restoring past the time specified by the last
timeToRestoreTo:. Alternatively, timeToRestoreTo: can be used to specify
another point in time before continuing the restore.
This method requires the FileControl privilege."
| aTimeT |
"Convert offset from 1901 to 1970 using constant derived from
(DateTime newGmtWithYear: 1970 dayOfYear: 1 milliseconds: 0) asSecondsGmt"
aTimeT := aDateTime asSecondsGmt - 2177452800.
(aTimeT < 0 _or:[ aTimeT > 16r7fffffff]) ifTrue:[
aDateTime _error: #rtErrArgOutOfRange
^ self _restoreFrom: aTimeT opcode: 8