From: Frederic Suter Date: Wed, 8 Mar 2017 10:36:37 +0000 (+0100) Subject: Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid X-Git-Tag: v3_15~185 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/ae701792ae00d4b822b890780619878e0a624980?hp=6ac51c40fd30b90107eadda2a0d808a5210bcc28 Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid --- diff --git a/src/bindings/java/jmsg.cpp b/src/bindings/java/jmsg.cpp index 47a8e3be6f..bd23d38733 100644 --- a/src/bindings/java/jmsg.cpp +++ b/src/bindings/java/jmsg.cpp @@ -60,17 +60,17 @@ JNIEnv *get_current_thread_env() void jmsg_throw_status(JNIEnv *env, msg_error_t status) { switch (status) { case MSG_TIMEOUT: - jxbt_throw_time_out_failure(env,nullptr); - break; + jxbt_throw_time_out_failure(env, ""); + break; case MSG_TRANSFER_FAILURE: - jxbt_throw_transfer_failure(env,nullptr); - break; + jxbt_throw_transfer_failure(env, ""); + break; case MSG_HOST_FAILURE: - jxbt_throw_host_failure(env,nullptr); - break; + jxbt_throw_host_failure(env, ""); + break; case MSG_TASK_CANCELED: - jxbt_throw_task_cancelled(env,nullptr); - break; + jxbt_throw_task_cancelled(env, ""); + break; default: xbt_die("undefined message failed (please see jmsg_throw_status function in jmsg.cpp)"); } diff --git a/src/bindings/java/jmsg_process.cpp b/src/bindings/java/jmsg_process.cpp index 90b43ea49b..3181faf080 100644 --- a/src/bindings/java/jmsg_process.cpp +++ b/src/bindings/java/jmsg_process.cpp @@ -290,7 +290,7 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep(JNIEnv *env, jclass cl // is a cancelled_error, see bindings/java/smx_context_java.c, function void smx_ctx_java_stop(smx_context_t context) and src/msg/msg_gos.c // function msg_error_t MSG_process_sleep(double nb_sec) - jxbt_throw_host_failure(env,nullptr); + jxbt_throw_host_failure(env, ""); } } diff --git a/src/bindings/java/jxbt_utilities.cpp b/src/bindings/java/jxbt_utilities.cpp index ba5d746554..c735ff410c 100644 --- a/src/bindings/java/jxbt_utilities.cpp +++ b/src/bindings/java/jxbt_utilities.cpp @@ -17,9 +17,7 @@ jclass jxbt_get_class(JNIEnv * env, const char *name) jclass cls = env->FindClass(name); if (!cls) { - char *m = bprintf("Class %s not found", name); - jxbt_throw_jni(env, m); - free(m); + jxbt_throw_jni(env, std::string("Class ") + name + " not found"); return nullptr; } @@ -40,13 +38,9 @@ jmethodID jxbt_get_jmethod(JNIEnv * env, jclass cls, const char *name, const cha jstring jclassname = (jstring) env->CallObjectMethod(cls, tostr_id, nullptr); const char *classname = env->GetStringUTFChars(jclassname, 0); - char *m = bprintf("Cannot find method %s(%s) in %s", name, signature, classname); - env->ReleaseStringUTFChars(jclassname, classname); - jxbt_throw_jni(env, m); - - free(m); + jxbt_throw_jni(env, std::string("Cannot find method") + name + "(" + signature + ") in " + classname); return 0; } @@ -66,13 +60,9 @@ jmethodID jxbt_get_static_jmethod(JNIEnv * env, jclass cls, const char *name, co jstring jclassname = (jstring) env->CallObjectMethod(cls, tostr_id, nullptr); const char *classname = env->GetStringUTFChars(jclassname, 0); - char *m = bprintf("Cannot find static method %s(%s) in %s", name, signature, classname); - env->ReleaseStringUTFChars(jclassname, classname); - jxbt_throw_jni(env, m); - - free(m); + jxbt_throw_jni(env, std::string("Cannot find static method") + name + "(" + signature + ") in " + classname); return 0; } @@ -91,11 +81,7 @@ jmethodID jxbt_get_static_smethod(JNIEnv * env, const char *classname, const cha id = env->GetStaticMethodID(cls, name, signature); if (!id) { - char *m = bprintf("Cannot find static method %s(%s) in %s", name, signature, classname); - - jxbt_throw_jni(env, m); - - free(m); + jxbt_throw_jni(env, std::string("Cannot find static method") + name + "(" + signature + ") in " + classname); return 0; } return id; @@ -113,11 +99,7 @@ jmethodID jxbt_get_smethod(JNIEnv * env, const char *classname, const char *name id = env->GetMethodID(cls, name, signature); if (!id) { - char *m = bprintf("Cannot find method %s(%s) in %s", name, signature, classname); - - jxbt_throw_jni(env, m); - - free(m); + jxbt_throw_jni(env, std::string("Cannot find method") + name + "(" + signature + ") in " + classname); return 0; } return id; @@ -136,13 +118,11 @@ jfieldID jxbt_get_jfield(JNIEnv * env, jclass cls, const char *name, const char jmethodID getname_id = env->GetMethodID(cls, "getName", "()Ljava/lang/String;"); jstring jclassname = (jstring) env->CallObjectMethod(cls, getname_id, nullptr); const char *classname = env->GetStringUTFChars(jclassname, 0); - char *m = bprintf("Cannot find field %s %s in %s", signature, name, classname); env->ReleaseStringUTFChars(jclassname, classname); - jxbt_throw_jni(env, m); + jxbt_throw_jni(env, std::string("Cannot find field") + signature + " " + name + " in " + classname); - free(m); return 0; } @@ -160,79 +140,74 @@ jfieldID jxbt_get_sfield(JNIEnv * env, const char *classname, const char *name, id = env->GetFieldID(cls, name, signature); if (!id) { - char *m = bprintf("Cannot find field %s %s in %s", signature, name, classname); - - jxbt_throw_jni(env, m); - - free(m); + jxbt_throw_jni(env, std::string("Cannot find field") + signature + " " + name + " in " + classname); return 0; } return id; } -void jxbt_throw_by_name(JNIEnv * env, const char *name, char *msg) +void jxbt_throw_by_name(JNIEnv* env, const char* name, std::string msg) { jclass cls = env->FindClass(name); - xbt_assert(cls, "%s (Plus severe error: class %s not found)\n", msg, name); - - env->ThrowNew(cls, msg); + xbt_assert(cls, "%s (Plus severe error: class %s not found)\n", msg.c_str(), name); - free(msg); + env->ThrowNew(cls, msg.c_str()); } -void jxbt_throw_jni(JNIEnv * env, const char *msg) +void jxbt_throw_jni(JNIEnv* env, std::string msg) { - jxbt_throw_by_name(env, "org/simgrid/msg/JniException", bprintf("Internal or JNI error: %s", msg)); + jxbt_throw_by_name(env, "org/simgrid/msg/JniException", "Internal or JNI error: " + msg); } -void jxbt_throw_notbound(JNIEnv * env, const char *kind, void *pointer) +void jxbt_throw_notbound(JNIEnv* env, std::string kind, void* pointer) { - jxbt_throw_by_name(env, "org/simgrid/msg/JniException", bprintf("Internal error: %s %p not bound", kind, pointer)); + jxbt_throw_by_name(env, "org/simgrid/msg/JniException", + "Internal error: " + kind + " " + static_cast(pointer) + " not bound"); } -void jxbt_throw_null(JNIEnv * env, char *msg) +void jxbt_throw_null(JNIEnv* env, std::string msg) { jxbt_throw_by_name(env, "java/lang/NullPointerException", msg); } -void jxbt_throw_illegal(JNIEnv * env, char *msg) +void jxbt_throw_illegal(JNIEnv* env, std::string msg) { jxbt_throw_by_name(env, "java/lang/IllegalArgumentException", msg); } -void jxbt_throw_host_not_found(JNIEnv * env, const char *invalid_name) +void jxbt_throw_host_not_found(JNIEnv* env, std::string invalid_name) { - jxbt_throw_by_name(env, "org/simgrid/msg/HostNotFoundException", bprintf("No such host: %s", invalid_name)); + jxbt_throw_by_name(env, "org/simgrid/msg/HostNotFoundException", "No such host: " + invalid_name); } -void jxbt_throw_storage_not_found(JNIEnv * env, const char *invalid_name) +void jxbt_throw_storage_not_found(JNIEnv* env, std::string invalid_name) { - jxbt_throw_by_name(env, "org/simgrid/msg/StorageNotFoundException", bprintf("No such storage: %s", invalid_name)); + jxbt_throw_by_name(env, "org/simgrid/msg/StorageNotFoundException", "No such storage: " + invalid_name); } -void jxbt_throw_process_not_found(JNIEnv * env, const char *invalid_name) +void jxbt_throw_process_not_found(JNIEnv* env, std::string invalid_name) { - jxbt_throw_by_name(env, "org/simgrid/msg/ProcessNotFoundException", bprintf("No such process: %s", invalid_name)); + jxbt_throw_by_name(env, "org/simgrid/msg/ProcessNotFoundException", "No such process: " + invalid_name); } -void jxbt_throw_transfer_failure(JNIEnv * env, char *details) +void jxbt_throw_transfer_failure(JNIEnv* env, std::string details) { jxbt_throw_by_name(env, "org/simgrid/msg/TransferFailureException", details); } -void jxbt_throw_host_failure(JNIEnv * env, char *details) +void jxbt_throw_host_failure(JNIEnv* env, std::string details) { - jxbt_throw_by_name(env, "org/simgrid/msg/HostFailureException", bprintf("Host Failure %s", details)); + jxbt_throw_by_name(env, "org/simgrid/msg/HostFailureException", "Host Failure " + details); } -void jxbt_throw_time_out_failure(JNIEnv * env, char *details) +void jxbt_throw_time_out_failure(JNIEnv* env, std::string details) { jxbt_throw_by_name(env, "org/simgrid/msg/TimeoutException", details); } -void jxbt_throw_task_cancelled(JNIEnv * env, char *details) +void jxbt_throw_task_cancelled(JNIEnv* env, std::string details) { jxbt_throw_by_name(env, "org/simgrid/msg/TaskCancelledException", details); } diff --git a/src/bindings/java/jxbt_utilities.h b/src/bindings/java/jxbt_utilities.h index f69f0078a5..067a654cd2 100644 --- a/src/bindings/java/jxbt_utilities.h +++ b/src/bindings/java/jxbt_utilities.h @@ -10,6 +10,7 @@ #include #include +#include SG_BEGIN_DECL() @@ -48,30 +49,30 @@ jfieldID jxbt_get_sfield(JNIEnv * env, const char *classname, const char *name, } } while (0) /* Throws an exception according to its name */ -void jxbt_throw_by_name(JNIEnv * env, const char *name, char *msg); +void jxbt_throw_by_name(JNIEnv* env, const char* name, std::string msg); /** Thrown on internal error of this layer, or on problem with JNI */ -void jxbt_throw_jni(JNIEnv * env, const char *msg); +void jxbt_throw_jni(JNIEnv* env, std::string msg); /** Thrown when using an object not bound to a native one where it should, or reverse (kinda JNI issue) */ -void jxbt_throw_notbound(JNIEnv * env, const char *kind, void *pointer); +void jxbt_throw_notbound(JNIEnv* env, std::string kind, void* pointer); /** Thrown if NULL gets used */ -void jxbt_throw_null(JNIEnv * env, char *msg); +void jxbt_throw_null(JNIEnv* env, std::string msg); /** Thrown on illegal arguments */ -void jxbt_throw_illegal(JNIEnv * env, char *msg); +void jxbt_throw_illegal(JNIEnv* env, std::string msg); /** Thrown when looking for an host from name does not lead to anything */ -void jxbt_throw_host_not_found(JNIEnv * env, const char *invalid_name); +void jxbt_throw_host_not_found(JNIEnv* env, std::string invalid_name); /** Thrown when looking for an host from name does not lead to anything */ -void jxbt_throw_process_not_found(JNIEnv * env, const char *invalid_name); +void jxbt_throw_process_not_found(JNIEnv* env, std::string invalid_name); /** Thrown when a transfer failure accure while Sending task */ -void jxbt_throw_transfer_failure(JNIEnv * env, char *detail); +void jxbt_throw_transfer_failure(JNIEnv* env, std::string detail); /** Thrown when a host failure occurs while Sending a task*/ -void jxbt_throw_host_failure(JNIEnv * env, char *details); +void jxbt_throw_host_failure(JNIEnv* env, std::string details); /** Thrown when a timeout occurs while Sending a task */ -void jxbt_throw_time_out_failure(JNIEnv * env, char *details); +void jxbt_throw_time_out_failure(JNIEnv* env, std::string details); /**Thrown when a task is canceled */ -void jxbt_throw_task_cancelled(JNIEnv * env, char *details); +void jxbt_throw_task_cancelled(JNIEnv* env, std::string details); /** Thrown when looking for a storage from name does not lead to anything */ -void jxbt_throw_storage_not_found(JNIEnv * env, const char *invalid_name); +void jxbt_throw_storage_not_found(JNIEnv* env, std::string invalid_name); SG_END_DECL() #endif diff --git a/src/kernel/routing/RoutedZone.cpp b/src/kernel/routing/RoutedZone.cpp index 9f846b594a..d12ad8cbfc 100644 --- a/src/kernel/routing/RoutedZone.cpp +++ b/src/kernel/routing/RoutedZone.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -29,13 +29,12 @@ void routing_route_free(sg_platf_route_cbarg_t route) static const char* instr_node_name(xbt_node_t node) { void* data = xbt_graph_node_get_data(node); - char* str = (char*)data; - return str; + return static_cast(data); } xbt_node_t new_xbt_graph_node(xbt_graph_t graph, const char* name, xbt_dict_t nodes) { - xbt_node_t ret = (xbt_node_t)xbt_dict_get_or_null(nodes, name); + xbt_node_t ret = static_cast(xbt_dict_get_or_null(nodes, name)); if (ret) return ret; @@ -48,21 +47,18 @@ xbt_edge_t new_xbt_graph_edge(xbt_graph_t graph, xbt_node_t s, xbt_node_t d, xbt { const char* sn = instr_node_name(s); const char* dn = instr_node_name(d); - int len = strlen(sn) + strlen(dn) + 1; - char* name = (char*)xbt_malloc(len * sizeof(char)); + std::string name = std::string(sn) + dn; - snprintf(name, len, "%s%s", sn, dn); - xbt_edge_t ret = (xbt_edge_t)xbt_dict_get_or_null(edges, name); + xbt_edge_t ret = static_cast(xbt_dict_get_or_null(edges, name.c_str())); if (ret == nullptr) { - snprintf(name, len, "%s%s", dn, sn); - ret = (xbt_edge_t)xbt_dict_get_or_null(edges, name); + name = std::string(dn) + sn; + ret = static_cast(xbt_dict_get_or_null(edges, name.c_str())); } if (ret == nullptr) { ret = xbt_graph_new_edge(graph, s, d, nullptr); - xbt_dict_set(edges, name, ret, nullptr); + xbt_dict_set(edges, name.c_str(), ret, nullptr); } - free(name); return ret; } diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index 810757f8d6..407c77fd31 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -5,6 +5,7 @@ #include "src/surf/HostImpl.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_host, surf, "Logging specific to the SURF host module"); @@ -153,7 +154,7 @@ xbt_dynar_t HostImpl::getAttachedStorageList() if (xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != nullptr) { simgrid::surf::Storage* storage = static_cast( xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL)); - if (!strcmp((const char*)storage->attach_, piface_->cname())) { + if (!strcmp(static_cast(storage->attach_), piface_->cname())) { xbt_dynar_push_as(result, void*, (void*)storage->cname()); } } @@ -168,39 +169,29 @@ Action* HostImpl::open(const char* fullpath) s_mount_t mnt; unsigned int cursor; size_t longest_prefix_length = 0; - char* path = nullptr; - char* file_mount_name = nullptr; - char* mount_name = nullptr; + std::string path; + std::string mount_name; XBT_DEBUG("Search for storage name for '%s' on '%s'", fullpath, piface_->cname()); xbt_dynar_foreach (storage_, cursor, mnt) { XBT_DEBUG("See '%s'", mnt.name); - file_mount_name = (char*)xbt_malloc((strlen(mnt.name) + 1)); - strncpy(file_mount_name, fullpath, strlen(mnt.name) + 1); - file_mount_name[strlen(mnt.name)] = '\0'; + std::string file_mount_name = std::string(fullpath).substr(0, strlen(mnt.name)); - if (!strcmp(file_mount_name, mnt.name) && + if (!strcmp(file_mount_name.c_str(), mnt.name) && strlen(mnt.name) > longest_prefix_length) { /* The current mount name is found in the full path and is bigger than the previous*/ longest_prefix_length = strlen(mnt.name); st = static_cast(mnt.storage); } - free(file_mount_name); } if (longest_prefix_length > 0) { /* Mount point found, split fullpath into mount_name and path+filename*/ - path = (char*)xbt_malloc((strlen(fullpath) - longest_prefix_length + 1)); - mount_name = (char*)xbt_malloc((longest_prefix_length + 1)); - strncpy(mount_name, fullpath, longest_prefix_length + 1); - strncpy(path, fullpath + longest_prefix_length, strlen(fullpath) - longest_prefix_length + 1); - path[strlen(fullpath) - longest_prefix_length] = '\0'; - mount_name[longest_prefix_length] = '\0'; + mount_name = std::string(fullpath).substr(0, longest_prefix_length); + path = std::string(fullpath).substr(longest_prefix_length, strlen(fullpath)); } else xbt_die("Can't find mount point for '%s' on '%s'", fullpath, piface_->cname()); - XBT_DEBUG("OPEN %s on disk '%s'", path, st->cname()); - Action* action = st->open((const char*)mount_name, (const char*)path); - free((char*)path); - free((char*)mount_name); + XBT_DEBUG("OPEN %s on disk '%s'", path.c_str(), st->cname()); + Action* action = st->open(mount_name.c_str(), path.c_str()); return action; } @@ -304,11 +295,9 @@ int HostImpl::fileMove(surf_file_t fd, const char* fullpath) sg_size_t* new_psize = xbt_new(sg_size_t, 1); *new_psize = *psize; xbt_dict_remove(findStorageOnMountList(fd->mount)->content_, fd->name); - char* path = (char*)xbt_malloc((strlen(fullpath) - strlen(fd->mount) + 1)); - strncpy(path, fullpath + strlen(fd->mount), strlen(fullpath) - strlen(fd->mount) + 1); - xbt_dict_set(findStorageOnMountList(fd->mount)->content_, path, new_psize, nullptr); + std::string path = std::string(fullpath).substr(strlen(fd->mount), strlen(fullpath)); + xbt_dict_set(findStorageOnMountList(fd->mount)->content_, path.c_str(), new_psize, nullptr); XBT_DEBUG("Move file from %s to %s, size '%llu'", fd->name, fullpath, *psize); - free(path); return 0; } else { XBT_WARN("File %s doesn't exist", fd->name); diff --git a/teshsuite/java/SleepHostOff/SleepHostOff.tesh b/teshsuite/java/SleepHostOff/SleepHostOff.tesh index fa751969d5..7fda994de8 100644 --- a/teshsuite/java/SleepHostOff/SleepHostOff.tesh +++ b/teshsuite/java/SleepHostOff/SleepHostOff.tesh @@ -6,7 +6,7 @@ $ java -classpath ${classpath:=.} SleepHostOff.SleepHostOff ${srcdir:=.}/small_p > [ 0.010000] (2:Sleeper@Tremblay) I'm not dead > [ 0.020000] (1:TestRunner@Fafard) Stop Tremblay > [ 0.020000] (2:Sleeper@Tremblay) I'm not dead -> [ 0.020000] (2:Sleeper@Tremblay) catch HostException: Host Failure (null) +> [ 0.020000] (2:Sleeper@Tremblay) catch HostException: Host Failure > [ 0.020000] (1:TestRunner@Fafard) Tremblay has been stopped > [ 0.320000] (1:TestRunner@Fafard) Test sleep seems ok, cool! (number of Process : 1, it should be 1 (i.e. the Test one)) > [ 0.320000] (0:maestro@) MSG_main finished; Cleaning up the simulation...