diff --git a/ChangeLog b/ChangeLog index 950f0aadc..d26170bfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2016-04-11 Ben Goodrich + * R/Module.R: Avoid calling as.character() on a C++Object to prevent race + 2016-04-02 Dirk Eddelbuettel * DESCRIPTION: Rolled to minor version 0.12.4.3 diff --git a/R/Module.R b/R/Module.R index e11a7e193..c296f4c0c 100644 --- a/R/Module.R +++ b/R/Module.R @@ -111,7 +111,7 @@ setMethod("initialize", "Module", .get_Module_Class <- function( x, name, pointer = .getModulePointer(x) ){ value <- .Call( Module__get_class, pointer, name ) - value@generator <- get("refClassGenerators",envir=x)[[as.character(value)]] + value@generator <- get("refClassGenerators", envir=x)[[value@.Data]] value } @@ -215,7 +215,7 @@ Module <- function( module, PACKAGE = methods::getPackageName(where), where = to for( i in seq_along(classes) ){ CLASS <- classes[[i]] - clname <- as.character(CLASS) + clname <- CLASS@.Data fields <- cpp_fields( CLASS, where ) methods <- cpp_refMethods(CLASS, where) @@ -276,7 +276,7 @@ Module <- function( module, PACKAGE = methods::getPackageName(where), where = to for( i in seq_along(classes) ){ CLASS <- classes[[i]] - clname <- as.character(CLASS) + clname <- CLASS@.Data demangled_name <- sub( "^Rcpp_", "", clname ) .classes_map[[ CLASS@typeid ]] <- storage[[ demangled_name ]] <- .get_Module_Class( module, demangled_name, xp )