Merge branch 'spidermonkey_version_nif' of github.com:apache/couchdb into spidermonkey_version_nif
diff --git a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp b/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp
index 98b28f3..5949910 100644
--- a/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp
+++ b/src/couch/priv/couch_spidermonkey/couch_spidermonkey.cpp
@@ -12,33 +12,32 @@
* the License.
*/
-#include <string>
+#include <string.h>
#include <jsapi.h>
#include "erl_nif.h"
-using namespace std;
-
ERL_NIF_TERM
get_spidermonkey_version(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
- const string JAVASCRIPT = "JavaScript-C";
- int js_len = JAVASCRIPT.length();
+ const char *JAVASCRIPT = "JavaScript-C";
+ int js_len = strlen(JAVASCRIPT);
// JS_GetImplementationVersion()
// returns "JavaScript-CMAJOR.MINOR.PATCH"
- const string FULLVERSION = JS_GetImplementationVersion();
+ const char *FULLVERSION = JS_GetImplementationVersion();
+ int fv_len = strlen(FULLVERSION);
- string result;
- size_t foundJSString = FULLVERSION.find(JAVASCRIPT);
- if (foundJSString != string::npos) {
+ const char* foundJSString = strstr(FULLVERSION,JAVASCRIPT);
+ if (foundJSString != NULL) {
//trim off "JavaScript-C",
- result = FULLVERSION.substr(js_len);
+ char *buf = (char*) malloc((fv_len - js_len + 1) * sizeof(char));
+ strncpy(buf, &FULLVERSION[js_len], fv_len - js_len);
+ buf[fv_len - js_len] = '\0';
+ return enif_make_string(env, buf, ERL_NIF_LATIN1);
} else {
//something changed in JS_GetImplementationVersion(), return original
- result = FULLVERSION;
+ return enif_make_string(env, FULLVERSION, ERL_NIF_LATIN1);
}
-
- return enif_make_string(env, result.c_str(), ERL_NIF_LATIN1);
}
static ErlNifFunc nif_functions[] = {
@@ -53,4 +52,4 @@
#ifdef __cplusplus
}
-#endif
\ No newline at end of file
+#endif