diff --git a/DESCRIPTION b/DESCRIPTION index 2395e651..efc83a4c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: parallelly -Version: 1.40.1-9006 +Version: 1.40.1-9007 Title: Enhancing the 'parallel' Package Imports: parallel, diff --git a/NEWS.md b/NEWS.md index 26c6c544..66b81d7e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,12 @@ * `makeClusterPSOCK()` will now produce an error, rather than a warning, when the local system command used to launch the parallel worker failed with a non-zero exit code. + + * Now `serializedSize()` always returns a double. Previously, it + would return an integer, if the value could be represented by an + integer. However, it turned out that returning an integer increased + the risk for integer overflow later on if, say, to such values were + added together. ## Bug Fixes diff --git a/R/serializedSize.R b/R/serializedSize.R index 291f28d8..a018f6f2 100644 --- a/R/serializedSize.R +++ b/R/serializedSize.R @@ -5,7 +5,7 @@ #' #' @param obj An R object. #' -#' @return (integer or double) Number of bytes needed to serialize this object. +#' @return (double) Number of bytes needed to serialize this object. #' #' @examples #' object.size(mtcars) diff --git a/man/serializedSize.Rd b/man/serializedSize.Rd index cc8701d3..5cd3a382 100644 --- a/man/serializedSize.Rd +++ b/man/serializedSize.Rd @@ -10,7 +10,7 @@ serializedSize(obj) \item{obj}{An R object.} } \value{ -(integer or double) Number of bytes needed to serialize this object. +(double) Number of bytes needed to serialize this object. } \description{ This function goes through all the motions of serializing an object, but diff --git a/src/calc-serialized-size.c b/src/calc-serialized-size.c index 21083545..4e55e26e 100644 --- a/src/calc-serialized-size.c +++ b/src/calc-serialized-size.c @@ -71,9 +71,5 @@ R_xlen_t calc_serialized_size(SEXP robj) { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SEXP R_calc_serialized_size(SEXP robj) { R_xlen_t count = calc_serialized_size(robj); - if (count > R_INT_MAX) { - return(ScalarReal((double) count)); - } else { - return(ScalarInteger(count)); - } + return(ScalarReal((double) count)); }