]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/driver-types.cpp
free strings previously allocated for conversions
[guile-irrlicht.git] / src / driver-types.cpp
index 3486251f27bad3365021e61d4a5a7de6ed2e73f9..fef8547b35c11e33e52cf59df7b72b4a14b36881 100644 (file)
@@ -28,34 +28,39 @@ using namespace irr;
 video::E_DRIVER_TYPE
 scm_to_driver_type (SCM driver_type)
 {
-  char* driverType = scm_to_utf8_string (scm_symbol_to_string (driver_type));
-  if (!strcmp (driverType, "null"))
+  char* type_name = scm_to_utf8_string (scm_symbol_to_string (driver_type));
+  video::E_DRIVER_TYPE type;
+
+  if (!strcmp (type_name, "null"))
     {
-      return video::EDT_NULL;
+      type = video::EDT_NULL;
     }
-  else if (!strcmp (driverType, "software"))
+  else if (!strcmp (type_name, "software"))
     {
-      return video::EDT_SOFTWARE;
+      type = video::EDT_SOFTWARE;
     }
-  else if (!strcmp (driverType, "burnings"))
+  else if (!strcmp (type_name, "burnings"))
     {
-      return video::EDT_BURNINGSVIDEO;
+      type = video::EDT_BURNINGSVIDEO;
     }
-  else if (!strcmp (driverType, "direct3d8"))
+  else if (!strcmp (type_name, "direct3d8"))
     {
-      return video::EDT_DIRECT3D8;
+      type = video::EDT_DIRECT3D8;
     }
-  else if (!strcmp (driverType, "direct3d9"))
+  else if (!strcmp (type_name, "direct3d9"))
     {
-      return video::EDT_DIRECT3D9;
+      type = video::EDT_DIRECT3D9;
     }
-  else if (!strcmp (driverType, "opengl"))
+  else if (!strcmp (type_name, "opengl"))
     {
-      return video::EDT_OPENGL;
+      type = video::EDT_OPENGL;
     }
   else
     {
       scm_error (scm_arg_type_key, NULL, "Wrong driver type: ~S",
                  scm_list_1 (driver_type), scm_list_1 (driver_type));
     }
+
+  free (type_name);
+  return type;
 }