You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2016/03/25 10:03:38 UTC

[1/2] lucy-clownfish git commit: Fix some `unused` warnings in the Perl bindings.

Repository: lucy-clownfish
Updated Branches:
  refs/heads/0.5 33651d757 -> 788087e7e


Fix some `unused` warnings in the Perl bindings.

Have the code generator emit some temp variables only if they are
needed.  Deploy one UNUSED_VAR macro.


Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/7ecc951e
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/7ecc951e
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/7ecc951e

Branch: refs/heads/0.5
Commit: 7ecc951e8575544ba070581f3754548d80b2d3df
Parents: 33651d7
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Wed Mar 16 00:35:55 2016 +0000
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Fri Mar 25 09:58:33 2016 +0100

----------------------------------------------------------------------
 compiler/src/CFCPerlConstructor.c               |  4 ++--
 compiler/src/CFCPerlMethod.c                    | 23 +++++++++++++++-----
 .../perl/buildlib/Clownfish/Build/Binding.pm    |  1 +
 3 files changed, 20 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/7ecc951e/compiler/src/CFCPerlConstructor.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlConstructor.c b/compiler/src/CFCPerlConstructor.c
index c0c3a89..380cb08 100644
--- a/compiler/src/CFCPerlConstructor.c
+++ b/compiler/src/CFCPerlConstructor.c
@@ -118,7 +118,8 @@ CFCPerlConstructor_xsub_def(CFCPerlConstructor *self, CFCClass *klass) {
         unsigned num_params = num_vars - 1;
         items_check = "items < 1";
         param_specs = CFCPerlSub_build_param_specs((CFCPerlSub*)self, 1);
-        locs_decl   = CFCUtil_sprintf("    int32_t locations[%u];\n",
+        locs_decl   = CFCUtil_sprintf("    int32_t locations[%u];\n"
+                                      "    SV *sv;\n",
                                       num_params);
 
         const char *pattern =
@@ -146,7 +147,6 @@ CFCPerlConstructor_xsub_def(CFCPerlConstructor *self, CFCClass *klass) {
         "    dXSARGS;\n"
         "%s" // param_specs
         "%s" // locs_decl
-        "    SV *sv;\n"
         "%s" // arg_decls
         "    %s retval;\n"
         "\n"

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/7ecc951e/compiler/src/CFCPerlMethod.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCPerlMethod.c b/compiler/src/CFCPerlMethod.c
index 911d51d..9e36d77 100644
--- a/compiler/src/CFCPerlMethod.c
+++ b/compiler/src/CFCPerlMethod.c
@@ -258,13 +258,18 @@ S_xsub_def_labeled_params(CFCPerlMethod *self, CFCClass *klass) {
         retval_decl = CFCUtil_sprintf("    %s retval;\n", return_type_c);
     }
 
+    const char *locations_sv = "";
+    if (num_vars > 1) {
+        locations_sv = "    SV *sv;\n";
+    }
+
     char pattern[] =
         "XS(%s);\n"
         "XS(%s) {\n"
         "    dXSARGS;\n"
         "%s"        // param_specs
         "    int32_t locations[%d];\n"
-        "    SV *sv;\n"
+        "%s" // locations_sv
         "%s"        // arg_decls
         "    %s method;\n"
         "%s"
@@ -286,8 +291,9 @@ S_xsub_def_labeled_params(CFCPerlMethod *self, CFCClass *klass) {
         "}\n";
     char *xsub_def
         = CFCUtil_sprintf(pattern, c_name, c_name, param_specs, num_vars - 1,
-                          arg_decls, meth_type_c, retval_decl, self_name,
-                          num_vars - 1, self_assign, arg_assigns, body);
+                          locations_sv, arg_decls, meth_type_c, retval_decl,
+                          self_name, num_vars - 1, self_assign, arg_assigns,
+                          body);
 
     FREEMEM(param_specs);
     FREEMEM(arg_decls);
@@ -342,6 +348,10 @@ S_xsub_def_positional_args(CFCPerlMethod *self, CFCClass *klass) {
                                        NULL);
         }
     }
+    const char *working_sv = "";
+    if (num_vars > 1) {
+        working_sv = "    SV *sv;\n";
+    }
 
     char *retval_decl;
     if (CFCType_is_void(return_type)) {
@@ -356,7 +366,7 @@ S_xsub_def_positional_args(CFCPerlMethod *self, CFCClass *klass) {
         "XS(%s);\n"
         "XS(%s) {\n"
         "    dXSARGS;\n"
-        "    SV *sv;\n"
+        "%s" // working_sv
         "%s" // arg_decls
         "    %s method;\n"
         "%s"
@@ -376,8 +386,9 @@ S_xsub_def_positional_args(CFCPerlMethod *self, CFCClass *klass) {
         "}\n";
     char *xsub
         = CFCUtil_sprintf(pattern, self->sub.c_name, self->sub.c_name,
-                          arg_decls, meth_type_c, retval_decl, num_args_cond,
-                          xs_name_list, self_assign, arg_assigns, body);
+                          working_sv, arg_decls, meth_type_c, retval_decl,
+                          num_args_cond, xs_name_list, self_assign,
+                          arg_assigns, body);
 
     FREEMEM(arg_assigns);
     FREEMEM(arg_decls);

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/7ecc951e/runtime/perl/buildlib/Clownfish/Build/Binding.pm
----------------------------------------------------------------------
diff --git a/runtime/perl/buildlib/Clownfish/Build/Binding.pm b/runtime/perl/buildlib/Clownfish/Build/Binding.pm
index 6d9e87e..32581e1 100644
--- a/runtime/perl/buildlib/Clownfish/Build/Binding.pm
+++ b/runtime/perl/buildlib/Clownfish/Build/Binding.pm
@@ -200,6 +200,7 @@ singleton(either_sv, value)
     bool     value;
 CODE:
 {
+    CFISH_UNUSED_VAR(either_sv);
     RETVAL = CFISH_OBJ_TO_SV_INC(cfish_Bool_singleton(value));
 }
 OUTPUT: RETVAL


[2/2] lucy-clownfish git commit: Ensure nul-terminated arg to strtod.

Posted by nw...@apache.org.
Ensure nul-terminated arg to strtod.

Inside Str_To_F64 we use strtod, which requires a nul-terminated C
string argument.  Now that Clownfish Strings consistently lack
nul-termination, we need to copy content into a nul-terminated buffer
and pass that to strtod.


Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/788087e7
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/788087e7
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/788087e7

Branch: refs/heads/0.5
Commit: 788087e7e6a544bdba1e42b5bd30f2761071afed
Parents: 7ecc951
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Mon Mar 14 16:05:23 2016 -0700
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Fri Mar 25 10:01:38 2016 +0100

----------------------------------------------------------------------
 CHANGES                         |  1 +
 runtime/core/Clownfish/String.c | 15 ++-------------
 2 files changed, 3 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/788087e7/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index d295a0b..ffa2e67 100644
--- a/CHANGES
+++ b/CHANGES
@@ -29,6 +29,7 @@ Revision history for Apache Clownfish
     * [CLOWNFISH-62] - Crash when passing Perl variable as decremented arg
     * [CLOWNFISH-63] - Don't export private methods via Go
     * [CLOWNFISH-69] - Clownfish::CFC missing from CPAN prereqs
+    * [CLOWNFISH-84] - Guarantee nul-terminated arg to strtod in Str_To_F64
 
   Improvements:
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/788087e7/runtime/core/Clownfish/String.c
----------------------------------------------------------------------
diff --git a/runtime/core/Clownfish/String.c b/runtime/core/Clownfish/String.c
index 7c2c0fa..ac17bad 100644
--- a/runtime/core/Clownfish/String.c
+++ b/runtime/core/Clownfish/String.c
@@ -263,8 +263,8 @@ Str_BaseX_To_I64_IMP(String *self, uint32_t base) {
     return retval;
 }
 
-static double
-S_safe_to_f64(String *self) {
+double
+Str_To_F64_IMP(String *self) {
     size_t amount = self->size < 511 ? self->size : 511;
     char buf[512];
     memcpy(buf, self->ptr, amount);
@@ -272,17 +272,6 @@ S_safe_to_f64(String *self) {
     return strtod(buf, NULL);
 }
 
-double
-Str_To_F64_IMP(String *self) {
-    char   *end;
-    double  value    = strtod(self->ptr, &end);
-    size_t  consumed = end - self->ptr;
-    if (consumed > self->size) { // strtod overran
-        value = S_safe_to_f64(self);
-    }
-    return value;
-}
-
 char*
 Str_To_Utf8_IMP(String *self) {
     char *buf = (char*)malloc(self->size + 1);