@@ -34,7 +34,7 @@ extern char* heap_end;
3434
3535namespace liu
3636{
37- static void resume_begin (storage_header&, const char * , LiveUpdate::resume_func);
37+ static void resume_begin (storage_header&, std::string , LiveUpdate::resume_func);
3838static std::map<uint16_t , LiveUpdate::resume_func> resume_funcs;
3939
4040bool LiveUpdate::is_resumable ()
@@ -66,17 +66,21 @@ void LiveUpdate::resume(std::string key, resume_func func)
6666 (long int ) (heap_end - (char *) location));
6767 throw std::runtime_error (" LiveUpdate storage area inside heap" );
6868 }
69- resume_helper (location, key, func);
69+ resume_helper (location, std::move ( key) , func);
7070}
7171void LiveUpdate::resume_from_heap (void * location, std::string key, LiveUpdate::resume_func func)
7272{
73- resume_helper (location, key, func);
73+ resume_helper (location, std::move ( key) , func);
7474}
7575
76- void resume_begin (storage_header& storage, const char * key, LiveUpdate::resume_func func)
76+ void resume_begin (storage_header& storage, std::string key, LiveUpdate::resume_func func)
7777{
78- int p = storage.find_partition (key);
79- LPRINT (" * Resuming from partition %d\n " , p);
78+ if (key.empty ())
79+ throw std::length_error (" LiveUpdate partition key cannot be an empty string" );
80+
81+ int p = storage.find_partition (key.c_str ());
82+ LPRINT (" * Resuming from partition %d at %p from %p\n " ,
83+ p, storage.begin (p), &storage);
8084
8185 // / restore each entry one by one, calling registered handlers
8286 for (auto * ptr = storage.begin (p); ptr->type != TYPE_END;)
0 commit comments