view R/rdyncall/R/dynfind.R @ 66:7a61dd082341 default tip

pydc: - fix double free triggered by capsule destructor, when freeing pydc and callback objects, manually
author Tassilo Philipp
date Fri, 24 May 2024 18:16:29 +0200 (13 months ago)
parents 0cfcc391201f
children
line wrap: on
line source

dynfind1 <- if (.Platform$OS.type == "windows") {
  function(name, ...) {
    handle <- .dynload(paste("lib",name,sep=""),...)
    if (!is.null(handle)) return(handle)
    .dynload(name,...)
  }
} else {
  if ( Sys.info()[["sysname"]] == "Darwin" ) {
    function(name, ...) {
      handle <- .dynload(paste(name,".framework/",name,sep=""),...)
      if (!is.null(handle)) return(handle)
      .dynload(paste("lib",name,".dylib",sep=""),...)
    }
  } else {
    function(name, ...) {
      handle <- .dynload(paste("lib",name,".so",sep=""),...)
      if (!is.null(handle)) return(handle)
      handle <- .dynload(paste("lib",name,sep=""),...)
      if (!is.null(handle)) return(handle)
      .dynload(paste(name,sep=""),...)  # needed by Solaris to lookup 'R'.
    }
  }
}

dynfind <- function(libnames, auto.unload = TRUE) {
  for (libname in libnames) {
    handle <- dynfind1(libname, auto.unload)
    if (!is.null(handle)) return(handle)
  }
}