Daniele Bartolini 10 лет назад
Родитель
Сommit
720cc130e4
4 измененных файлов с 24 добавлено и 42 удалено
  1. 6 1
      src/core/json/json.cpp
  2. 6 1
      src/core/json/sjson.cpp
  3. 0 36
      src/core/strings/string_utils.h
  4. 12 4
      src/device_options.cpp

+ 6 - 1
src/core/json/json.cpp

@@ -164,7 +164,12 @@ namespace json
 
 		// Ensure null terminated
 		array::push_back(number, '\0');
-		return parse_double(array::begin(number));
+
+		double val;
+		int ok = sscanf(array::begin(number), "%lf", &val);
+		CE_ASSERT(ok == 1, "Failed to parse double: %s", array::begin(number));
+		CE_UNUSED(ok);
+		return val;
 	}
 
 	bool parse_bool(const char* json)

+ 6 - 1
src/core/json/sjson.cpp

@@ -231,7 +231,12 @@ namespace sjson
 
 		// Ensure null terminated
 		array::push_back(number, '\0');
-		return parse_double(array::begin(number));
+
+		double val;
+		int ok = sscanf(array::begin(number), "%lf", &val);
+		CE_ASSERT(ok == 1, "Failed to parse double: %s", array::begin(number));
+		CE_UNUSED(ok);
+		return val;
 	}
 
 	bool parse_bool(const char* json)

+ 0 - 36
src/core/strings/string_utils.h

@@ -66,40 +66,4 @@ inline const char* skip_block(const char* str, char a, char b)
 	return NULL;
 }
 
-inline int32_t parse_int(const char* str)
-{
-	int val;
-	int ok = sscanf(str, "%d", &val);
-	CE_ASSERT(ok == 1, "Failed to parse int: %s", str);
-	CE_UNUSED(ok);
-	return val;
-}
-
-inline uint32_t parse_uint(const char* str)
-{
-	unsigned int val;
-	int ok = sscanf(str, "%u", &val);
-	CE_ASSERT(ok == 1, "Failed to parse uint: %s", str);
-	CE_UNUSED(ok);
-	return val;
-}
-
-inline float parse_float(const char* str)
-{
-	float val;
-	int ok = sscanf(str, "%f", &val);
-	CE_ASSERT(ok == 1, "Failed to parse float: %s", str);
-	CE_UNUSED(ok);
-	return val;
-}
-
-inline double parse_double(const char* str)
-{
-	double val;
-	int ok = sscanf(str, "%lf", &val);
-	CE_ASSERT(ok == 1, "Failed to parse float: %s", str);
-	CE_UNUSED(ok);
-	return val;
-}
-
 } // namespace crown

+ 12 - 4
src/device_options.cpp

@@ -95,13 +95,13 @@ int DeviceOptions::parse()
 
 	if (!path::is_absolute(_source_dir))
 	{
-		help("Source dir must be absolute");
+		help("Source dir must be absolute.");
 		return EXIT_FAILURE;
 	}
 
 	if (!path::is_absolute(_bundle_dir))
 	{
-		help("Bundle dir must be absolute");
+		help("Bundle dir must be absolute.");
 		return EXIT_FAILURE;
 	}
 
@@ -121,13 +121,21 @@ int DeviceOptions::parse()
 	const char* parent = cl.get_parameter("parent-window");
 	if (parent != NULL)
 	{
-		_parent_window = parse_uint(parent);
+		if (sscanf(parent, "%u", &_parent_window) != 1)
+		{
+			help("Parent window is invalid.");
+			return EXIT_FAILURE;
+		}
 	}
 
 	const char* port = cl.get_parameter("console-port");
 	if (port != NULL)
 	{
-		_console_port = parse_uint(port);
+		if (sscanf(port, "%hu", &_console_port) != 1)
+		{
+			help("Console port is invalid.");
+			return EXIT_FAILURE;
+		}
 	}
 
 	return EXIT_SUCCESS;