Merge pull request #2019 from dota17/contains_v2
fix #1982:json_pointer.contains() exception is incorrectly raised
This commit is contained in:
		
						commit
						f0050c9ba0
					
				
					 3 changed files with 51 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -678,6 +678,27 @@ class json_pointer
 | 
			
		|||
                        // "-" always fails the range check
 | 
			
		||||
                        return false;
 | 
			
		||||
                    }
 | 
			
		||||
                    if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 and not ("0" <= reference_token and reference_token <= "9")))
 | 
			
		||||
                    {
 | 
			
		||||
                        // invalid char
 | 
			
		||||
                        return false;
 | 
			
		||||
                    }
 | 
			
		||||
                    if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1))
 | 
			
		||||
                    {
 | 
			
		||||
                        if (JSON_HEDLEY_UNLIKELY(not ('1' <= reference_token[0] and reference_token[0] <= '9')))
 | 
			
		||||
                        {
 | 
			
		||||
                            // first char should be between '1' and '9'
 | 
			
		||||
                            return false;
 | 
			
		||||
                        }
 | 
			
		||||
                        for (std::size_t i = 1; i < reference_token.size(); i++)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (JSON_HEDLEY_UNLIKELY(not ('0' <= reference_token[i] and reference_token[i] <= '9')))
 | 
			
		||||
                            {
 | 
			
		||||
                                // other char should be between '0' and '9'
 | 
			
		||||
                                return false;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    const auto idx = static_cast<size_type>(array_index(reference_token));
 | 
			
		||||
                    if (idx >= ptr->size())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue