Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
avoid xbt_strdup in c++ examples and tests
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Sat, 30 Dec 2017 15:53:40 +0000 (16:53 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Sat, 30 Dec 2017 15:53:40 +0000 (16:53 +0100)
examples/s4u/io-storage-raw/s4u-io-storage-raw.cpp
examples/s4u/io-storage-raw/s4u-io-storage-raw.tesh
teshsuite/s4u/listen_async/listen_async.cpp
teshsuite/s4u/storage_client_server/storage_client_server.cpp
teshsuite/s4u/storage_client_server/storage_client_server.tesh

index b4dc505..7ab871b 100644 (file)
@@ -34,14 +34,14 @@ static void host()
   /* - Attach some user data to disk1 */
   XBT_INFO("*** Get/set data for storage element: Disk4 ***");
 
-  char* data = static_cast<char*>(storage->getUserdata());
+  std::string* data = static_cast<std::string*>(storage->getUserdata());
 
-  XBT_INFO("Get storage data: '%s'", data);
+  XBT_INFO("Get storage data: '%s'", data ? data->c_str() : "No user data");
 
-  storage->setUserdata(xbt_strdup("Some user data"));
-  data = static_cast<char*>(storage->getUserdata());
-  XBT_INFO("Set and get data: '%s'", data);
-  xbt_free(data);
+  storage->setUserdata(new std::string("Some user data"));
+  data = static_cast<std::string*>(storage->getUserdata());
+  XBT_INFO("Set and get data: '%s'", data->c_str());
+  delete data;
 }
 
 int main(int argc, char** argv)
index 0f8642d..c72cbb3 100644 (file)
@@ -7,6 +7,6 @@ $ ${bindir}/s4u-io-storage-raw$EXEEXT ${platfdir}/storage/storage.xml "--log=roo
 > [  0.003333] (1:@denise) Wrote 200000 bytes on 'Disk4'
 > [  0.004333] (1:@denise) Read 200000 bytes on 'Disk4'
 > [  0.004333] (1:@denise) *** Get/set data for storage element: Disk4 ***
-> [  0.004333] (1:@denise) Get storage data: '(null)'
+> [  0.004333] (1:@denise) Get storage data: 'No user data'
 > [  0.004333] (1:@denise) Set and get data: 'Some user data'
 > [  0.004333] (0:maestro@) Simulated time: 0.00433333
index 19a31c9..0951f56 100644 (file)
@@ -17,28 +17,28 @@ static void server()
 {
   simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName("mailbox");
 
-  simgrid::s4u::CommPtr sendComm = mailbox->put_async(xbt_strdup("Some data"), 0);
+  simgrid::s4u::CommPtr sendComm = mailbox->put_async(new std::string("Some data"), 0);
 
   xbt_assert(mailbox->listen()); // True (1)
   XBT_INFO("Task listen works on regular mailboxes");
-  char* res = static_cast<char*>(mailbox->get());
+  std::string* res = static_cast<std::string*>(mailbox->get());
 
-  xbt_assert(not strcmp("Some data", res), "Data received: %s", res);
+  xbt_assert(*res == "Some data", "Data received: %s", res->c_str());
   XBT_INFO("Data successfully received from regular mailbox");
-  xbt_free(res);
+  delete res;
   sendComm->wait();
 
   simgrid::s4u::MailboxPtr mailbox2 = simgrid::s4u::Mailbox::byName("mailbox2");
   mailbox2->setReceiver(simgrid::s4u::Actor::self());
 
-  mailbox2->put_init(xbt_strdup("More data"), 0)->detach();
+  mailbox2->put_init(new std::string("More data"), 0)->detach();
 
   xbt_assert(mailbox2->listen()); // used to break.
   XBT_INFO("Task listen works on asynchronous mailboxes");
 
-  res = static_cast<char*>(mailbox2->get());
-  xbt_assert(not strcmp("More data", res));
-  xbt_free(res);
+  res = static_cast<std::string*>(mailbox2->get());
+  xbt_assert(*res == "More data");
+  delete res;
 
   XBT_INFO("Data successfully received from asynchronous mailbox");
 }
index 1f14a3e..3426e6b 100644 (file)
@@ -80,12 +80,12 @@ static void get_set_storage_data(const std::string& storage_name)
   XBT_INFO("*** GET/SET DATA for storage element: %s ***", storage_name.c_str());
   simgrid::s4u::Storage* storage = simgrid::s4u::Storage::byName(storage_name);
 
-  char* data = static_cast<char*>(storage->getUserdata());
-  XBT_INFO("Get data: '%s'", data);
-  storage->setUserdata(xbt_strdup("Some data"));
-  data = static_cast<char*>(storage->getUserdata());
-  XBT_INFO("\tSet and get data: '%s'", data);
-  xbt_free(data);
+  std::string* data = static_cast<std::string*>(storage->getUserdata());
+  XBT_INFO("Get data: '%s'", data ? data->c_str() : "No User Data");
+  storage->setUserdata(new std::string("Some data"));
+  data = static_cast<std::string*>(storage->getUserdata());
+  XBT_INFO("\tSet and get data: '%s'", data->c_str());
+  delete data;
 }
 
 static void dump_platform_storages()
index f978fb4..8cc8816 100644 (file)
@@ -57,7 +57,7 @@ $ ./storage_client_server$EXEEXT ${platfdir}/storage/storage.xml "--log=root.fmt
 > [  1.207952] (server@alice)          Free size: 534479367024 bytes
 > [  1.207952] (server@alice)          Used size: 2391544976 bytes
 > [  1.207952] (client@bob) *** GET/SET DATA for storage element: Disk1 ***
-> [  1.207952] (client@bob) Get data: '(null)'
+> [  1.207952] (client@bob) Get data: 'No User Data'
 > [  1.207952] (client@bob)    Set and get data: 'Some data'
 > [  1.207952] (server@alice)  No property attached.
 > [  1.207952] (server@alice) *** Dump a storage element ***