--- ./apps/graph/src/Makefile.inc.orig 2014-10-13 06:14:22.000000000 -0600
+++ ./apps/graph/src/Makefile.inc 2015-03-05 20:00:00.000000000 -0700
@@ -1,4 +1,4 @@
-ifneq ($(filter 4.8% 4.9%,${GCCversion}),)
+ifneq ($(filter 4.8% 4.9% 5%,${GCCversion}),)
bipartite_signature$O : ExtraCXXFLAGS += -O1
endif
--- ./lib/core/include/perl/Value.h.orig 2014-10-13 06:14:22.000000000 -0600
+++ ./lib/core/include/perl/Value.h 2015-02-26 21:00:00.000000000 -0700
@@ -646,7 +646,7 @@ protected:
, options(value_not_trusted)
{}
- static const char* frame_lower_bound();
+ static bool not_on_stack(const char *val, const char *fup);
bool is_defined() const;
bool is_TRUE() const;
@@ -1016,9 +1016,8 @@ public:
typedef typename object_traits<Source>::persistent_type Persistent;
if (type_cache<Source>::magic_allowed(prescribed_pkg)) {
if (fup && !object_traits<Source>::is_lazy) {
- const char* const flo=frame_lower_bound();
const char* const val=reinterpret_cast<const char*>(&x);
- if ((val<flo)==(val<fup)) {
+ if (not_on_stack(val,fup)) {
// the wrapped function has returned a reference to an object stored elsewhere
return store_magic_ref(x, is_masquerade<Source>(), bool2type<object_traits<Source>::is_lazy>(), identical<Source,Persistent>());
}
@@ -1086,9 +1085,8 @@ public:
typename enable_if<Anchor*, list_contains<primitive_lvalues, Source>::value>::type
put_lval(const Source& x, const char* fup, int, const Value* owner, OwnerType*)
{
- const char* const flo=frame_lower_bound();
const char* const val=reinterpret_cast<const char*>(&x);
- Anchor* anchor=store_primitive_ref(x, type_cache<Source>::get_descr(), (val<flo)==(val<fup));
+ Anchor* anchor=store_primitive_ref(x, type_cache<Source>::get_descr(), not_on_stack(val,fup));
if (owner) get_temp();
return anchor;
}
--- ./lib/core/src/perl/RefHash.xs.orig 2014-11-08 20:00:00.000000000 -0700
+++ ./lib/core/src/perl/RefHash.xs 2015-03-06 12:30:00.000000000 -0700
@@ -146,10 +146,10 @@ OP* intercept_pp_helem(pTHX)
SV *keysv=TOPs;
HV *hv=(HV*)TOPm1s, *class=SvSTASH(hv);
MAGIC *mg;
+ tmp_keysv tmp_key;
if (HashCPPbound(hv))
return pm_perl_cpp_helem(aTHX_ hv, mg);
if (SvROK(keysv)) {
- tmp_keysv tmp_key;
if (!RefKeyAllowed(hv,class))
DIE(aTHX_ err_ref);
if ((PL_op->op_private & (OPpLVAL_INTRO | OPpLVAL_DEFER)) == OPpLVAL_INTRO &&
--- ./lib/core/src/perl/Value.cc.orig 2014-10-13 06:14:22.000000000 -0600
+++ ./lib/core/src/perl/Value.cc 2015-02-26 21:00:00.000000000 -0700
@@ -258,11 +258,10 @@ void ListReturn::upgrade(int size)
EXTEND(SP, size);
}
-const char* Value::frame_lower_bound()
+bool Value::not_on_stack(const char *val, const char *fup)
{
char c=0;
- const char* flo=&c;
- return flo;
+ return (val<&c) == (val<fup);
}
long Value::int_value() const