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);