fix crash invalid input
[convexer.git] / cxr / cxr.h
index c3f7d868d71262110ce28bb89089e4f2c0a8cb28..a6643131f6f26656657e7e6441c9311c96531944 100644 (file)
--- a/cxr/cxr.h
+++ b/cxr/cxr.h
@@ -280,7 +280,8 @@ enum cxr_soliderr
    k_soliderr_degenerate_implicit,
    k_soliderr_non_coplanar_vertices,
    k_soliderr_non_convex_poly,
-   k_soliderr_bad_result
+   k_soliderr_bad_result,
+   k_soliderr_invalid_input
 };
 
 /*
@@ -2278,6 +2279,16 @@ CXR_API void cxr_free_tri_mesh( cxr_tri_mesh *mesh )
 
 CXR_API cxr_world *cxr_decompose( cxr_static_mesh *src, i32 *perrcode )
 {
+   /* Make sure data is in the mesh and isn't empty */
+   if( !src->edge_count || !src->loop_count || !src->poly_count )
+   {
+      cxr_log( "Error %d\n", k_soliderr_invalid_input );
+      if( perrcode )
+         *perrcode = k_soliderr_invalid_input;
+
+      return NULL;
+   }
+
    u32 error = 0x00;
    cxr_world *world = malloc( sizeof(*world) );