Merge pull request #153 from whackashoe/remove_sprintf
Replace sprintf with hex function, this fixes #149
This commit is contained in:
		
						commit
						f36f316fc7
					
				
					 2 changed files with 24 additions and 8 deletions
				
			
		
							
								
								
									
										16
									
								
								src/json.hpp
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								src/json.hpp
									
										
									
									
									
								
							|  | @ -4696,11 +4696,19 @@ class basic_json | |||
|                 { | ||||
|                     if (c >= 0x00 and c <= 0x1f) | ||||
|                     { | ||||
|                         // convert a number 0..15 to its hex representation (0..f)
 | ||||
|                         auto hexify = [](const char v) -> char | ||||
|                         { | ||||
|                             return (v < 10) ? ('0' + v) : ('a' + v - 10); | ||||
|                         }; | ||||
| 
 | ||||
|                         // print character c as \uxxxx
 | ||||
|                         sprintf(&result[pos + 1], "u%04x", int(c)); | ||||
|                         pos += 6; | ||||
|                         // overwrite trailing null character
 | ||||
|                         result[pos] = '\\'; | ||||
|                         for(const char m : { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f) }) | ||||
|                         { | ||||
|                             result[++pos] = m; | ||||
|                         } | ||||
| 
 | ||||
|                         ++pos; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|  |  | |||
|  | @ -4696,11 +4696,19 @@ class basic_json | |||
|                 { | ||||
|                     if (c >= 0x00 and c <= 0x1f) | ||||
|                     { | ||||
|                         // convert a number 0..15 to its hex representation (0..f) | ||||
|                         auto hexify = [](const char v) -> char | ||||
|                         { | ||||
|                             return (v < 10) ? ('0' + v) : ('a' + v - 10); | ||||
|                         }; | ||||
| 
 | ||||
|                         // print character c as \uxxxx | ||||
|                         sprintf(&result[pos + 1], "u%04x", int(c)); | ||||
|                         pos += 6; | ||||
|                         // overwrite trailing null character | ||||
|                         result[pos] = '\\'; | ||||
|                         for(const char m : { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f) }) | ||||
|                         { | ||||
|                             result[++pos] = m; | ||||
|                         } | ||||
| 
 | ||||
|                         ++pos; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue