@@ -176,7 +176,7 @@ function tryparse_internal(::Type{T}, s::AbstractString, startpos::Int, endpos::
176176 return n
177177end
178178
179- function tryparse_internal (:: Type{Bool} , sbuff:: Union{String,SubString{String}} ,
179+ function tryparse_internal (:: Type{Bool} , sbuff:: AbstractString ,
180180 startpos:: Int , endpos:: Int , base:: Integer , raise:: Bool )
181181 if isempty (sbuff)
182182 raise && throw (ArgumentError (" input string is empty" ))
@@ -202,10 +202,15 @@ function tryparse_internal(::Type{Bool}, sbuff::Union{String,SubString{String}},
202202 end
203203
204204 len = endpos - startpos + 1
205- p = pointer (sbuff) + startpos - 1
206- GC. @preserve sbuff begin
207- (len == 4 ) && (0 == _memcmp (p, " true" , 4 )) && (return true )
208- (len == 5 ) && (0 == _memcmp (p, " false" , 5 )) && (return false )
205+ if sbuff isa Union{String, SubString{String}}
206+ p = pointer (sbuff) + startpos - 1
207+ GC. @preserve sbuff begin
208+ (len == 4 ) && (0 == _memcmp (p, " true" , 4 )) && (return true )
209+ (len == 5 ) && (0 == _memcmp (p, " false" , 5 )) && (return false )
210+ end
211+ else
212+ (len == 4 ) && (SubString (sbuff, startpos: startpos+ 3 ) == " true" ) && (return true )
213+ (len == 5 ) && (SubString (sbuff, startpos: startpos+ 4 ) == " false" ) && (return false )
209214 end
210215
211216 if raise
0 commit comments