diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index cde53f6350e..ec5c98d8a4b 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -645,12 +645,11 @@ compile_vertex_list(struct gl_context *ctx) PV_LAST, PV_LAST, &pmode, &index_size, &new_count, &trans_func); - if (new_count > 0) { + if (new_count > 0) trans_func(original_prims[i].start, new_count, tmp_indices); - vertex_count = new_count; - mode = (GLubyte)pmode; - converted_prim = true; - } + vertex_count = new_count; + mode = (GLubyte)pmode; + converted_prim = true; } /* If 2 consecutive prims use the same mode => merge them. */ @@ -734,9 +733,10 @@ compile_vertex_list(struct gl_context *ctx) merged_prims[last_valid_prim].count = idx - start; } merged_prims[last_valid_prim].mode = mode; - } - assert(idx > 0 && idx <= max_index_count); + /* converted prims will filter incomplete primitives and may have no indices */ + assert((idx > 0 || converted_prim) && idx <= max_index_count); + } unsigned merged_prim_count = last_valid_prim + 1; node->cold->ib.ptr = NULL;