Commit 3e1f322
committed
Fix Issue 24165 - Failed readf leaves File in inconsistent state
Previously, a failed call to readf resulted in multiple copies of the
same LockingTextReader being destroyed. Since LockingTextReader'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 LockingTextReader a reference-counted type.
Ideally, to avoid unnecessary overhead, this issue would have been fixed
by making LockingTextReader 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 3e1f322
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