Commit 020062b
committed
Fix Issue 24165 - Failed readf leaves File in inconsistent state
Previously, a failed call to readf resulted in multiple copies of the
same LockingTextWriter being destroyed. Since LockingTextWriter's
destructor calls ungetc on the last-read character, this caused that
character to appear multiple times in subsequent reads from the File.
This change ensures that the destructor in question is only run once by
making LockingTextWriter a reference-counted type.
Ideally, to avoid unnecessary overhead, this issue would have been fixed
by making LockingTextWriter non-copyable. However, non-copyable ranges
are poorly-supported by Phobos, and this approach would have required
extensive changes to several other modules, including changes to the
interfaces of some public symbols.1 parent d945686 commit 020062b
1 file changed
+100
-53
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3993 | 3993 | | |
3994 | 3994 | | |
3995 | 3995 | | |
3996 | | - | |
3997 | | - | |
3998 | | - | |
3999 | | - | |
4000 | | - | |
| 3996 | + | |
4001 | 3997 | | |
4002 | | - | |
4003 | | - | |
4004 | | - | |
4005 | | - | |
4006 | | - | |
| 3998 | + | |
| 3999 | + | |
| 4000 | + | |
4007 | 4001 | | |
4008 | | - | |
4009 | | - | |
4010 | | - | |
4011 | | - | |
| 4002 | + | |
| 4003 | + | |
| 4004 | + | |
| 4005 | + | |
| 4006 | + | |
| 4007 | + | |
| 4008 | + | |
4012 | 4009 | | |
4013 | | - | |
4014 | | - | |
4015 | | - | |
4016 | | - | |
| 4010 | + | |
4017 | 4011 | | |
4018 | | - | |
4019 | | - | |
4020 | | - | |
| 4012 | + | |
| 4013 | + | |
| 4014 | + | |
| 4015 | + | |
4021 | 4016 | | |
4022 | | - | |
4023 | | - | |
4024 | | - | |
4025 | | - | |
4026 | | - | |
| 4017 | + | |
| 4018 | + | |
| 4019 | + | |
4027 | 4020 | | |
4028 | | - | |
4029 | | - | |
4030 | | - | |
| 4021 | + | |
| 4022 | + | |
| 4023 | + | |
| 4024 | + | |
| 4025 | + | |
| 4026 | + | |
| 4027 | + | |
4031 | 4028 | | |
4032 | | - | |
4033 | | - | |
4034 | | - | |
4035 | | - | |
| 4029 | + | |
4036 | 4030 | | |
4037 | | - | |
4038 | | - | |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
| 4037 | + | |
| 4038 | + | |
| 4039 | + | |
| 4040 | + | |
4039 | 4041 | | |
4040 | | - | |
4041 | | - | |
| 4042 | + | |
4042 | 4043 | | |
4043 | | - | |
4044 | | - | |
4045 | 4044 | | |
4046 | | - | |
4047 | | - | |
4048 | | - | |
| 4045 | + | |
4049 | 4046 | | |
4050 | | - | |
| 4047 | + | |
4051 | 4048 | | |
4052 | | - | |
4053 | | - | |
4054 | | - | |
| 4049 | + | |
| 4050 | + | |
| 4051 | + | |
| 4052 | + | |
| 4053 | + | |
| 4054 | + | |
| 4055 | + | |
| 4056 | + | |
| 4057 | + | |
| 4058 | + | |
4055 | 4059 | | |
4056 | | - | |
4057 | | - | |
| 4060 | + | |
| 4061 | + | |
| 4062 | + | |
| 4063 | + | |
| 4064 | + | |
| 4065 | + | |
4058 | 4066 | | |
4059 | | - | |
| 4067 | + | |
4060 | 4068 | | |
4061 | | - | |
| 4069 | + | |
| 4070 | + | |
| 4071 | + | |
| 4072 | + | |
| 4073 | + | |
| 4074 | + | |
| 4075 | + | |
| 4076 | + | |
| 4077 | + | |
| 4078 | + | |
| 4079 | + | |
| 4080 | + | |
| 4081 | + | |
| 4082 | + | |
| 4083 | + | |
| 4084 | + | |
| 4085 | + | |
| 4086 | + | |
| 4087 | + | |
4062 | 4088 | | |
4063 | 4089 | | |
4064 | 4090 | | |
4065 | 4091 | | |
4066 | | - | |
4067 | | - | |
4068 | | - | |
| 4092 | + | |
4069 | 4093 | | |
4070 | 4094 | | |
4071 | 4095 | | |
| |||
4143 | 4167 | | |
4144 | 4168 | | |
4145 | 4169 | | |
| 4170 | + | |
| 4171 | + | |
| 4172 | + | |
| 4173 | + | |
| 4174 | + | |
| 4175 | + | |
| 4176 | + | |
| 4177 | + | |
| 4178 | + | |
| 4179 | + | |
| 4180 | + | |
| 4181 | + | |
| 4182 | + | |
| 4183 | + | |
| 4184 | + | |
| 4185 | + | |
| 4186 | + | |
| 4187 | + | |
| 4188 | + | |
| 4189 | + | |
| 4190 | + | |
| 4191 | + | |
| 4192 | + | |
4146 | 4193 | | |
4147 | 4194 | | |
4148 | 4195 | | |
| |||
0 commit comments