Skip to content

Commit 1b61b30

Browse files
authored
fix bug:load model from memory (#1168)
1 parent 7638a74 commit 1b61b30

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

source/api/c_api.c

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -393,42 +393,43 @@ graph_t create_graph(context_t context, const char* model_format, const char* fi
393393
{
394394
int ret = 0;
395395
struct serializer* loader = find_serializer_via_name(model_format);
396-
if (loader == NULL)
397-
{
398-
TLOG_ERR("Tengine: No matched serializer(name: %s) found.\n", model_format);
399-
return create_graph_error;
400-
}
401-
402396
va_list ap;
403-
va_start(ap, file_name);
404-
405-
const char* p = strchr(model_format, ':');
406-
407-
// load from file or memory
408-
if (NULL == p)
409-
{
410-
ret = loader->load_model(loader, ir_graph, file_name, ap);
411-
}
412-
else
397+
if (loader == NULL)
413398
{
414-
if (p[1] != 'm')
399+
// load from memory
400+
const char* p = strchr(model_format, ':');
401+
if ((NULL == p) || (p[1] != 'm'))
415402
{
416403
TLOG_ERR("Tengine: Invalid postfix(%s) for model format: should 'm' only.\n", p);
417404
return create_graph_error(ir_graph);
418405
}
419406

407+
loader = find_serializer_via_name("tengine");
408+
420409
if (NULL == loader->load_mem)
421410
{
422411
TLOG_ERR("Tengine: Serializer(%s) does not support loading from memory.\n", loader->get_name(loader));
423412
return create_graph_error(ir_graph);
424413
}
425414

415+
va_start(ap, file_name);
416+
426417
int size = va_arg(ap, int);
427418

428419
ret = loader->load_mem(loader, ir_graph, (void*)file_name, size, ap);
420+
421+
va_end(ap);
429422
}
423+
else
424+
{
425+
// load from file
426+
427+
va_start(ap, file_name);
430428

431-
va_end(ap);
429+
ret = loader->load_model(loader, ir_graph, file_name, ap);
430+
431+
va_end(ap);
432+
}
432433

433434
if (0 != ret)
434435
{

0 commit comments

Comments
 (0)