Группа :: Разработка/Functional
Пакет: refal-plus
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: refal-plus-4137-alt-build.patch
Скачать
Скачать
diff --git a/c++/libp++/pxx_allocator.hh b/c++/libp++/pxx_allocator.hh
index dc9be25..79ae708 100644
--- a/c++/libp++/pxx_allocator.hh
+++ b/c++/libp++/pxx_allocator.hh
@@ -62,7 +62,7 @@ public:
inline Allocator (unsigned _features = 0) ;
//
// Virtual destructor
- virtual inline ~Allocator () ;
+ virtual inline ~Allocator () throw (SysError);
//
// Allocate memory block of _size bytes
virtual void* allocate (size_t _size) = 0 ;
diff --git a/c++/libp++/pxx_allocator.ih b/c++/libp++/pxx_allocator.ih
index d30d39f..69e67b7 100644
--- a/c++/libp++/pxx_allocator.ih
+++ b/c++/libp++/pxx_allocator.ih
@@ -11,7 +11,7 @@ inline Allocator::Allocator (unsigned _features /* = 0 */) :
features (_features)
{}
-inline Allocator::~Allocator ()
+inline Allocator::~Allocator () throw (SysError)
{
if (set_as_default) default_allocator_destroyed = true;
}
diff --git a/c++/libp++/pxx_common.cc b/c++/libp++/pxx_common.cc
index 4ce1484..2c03771 100644
--- a/c++/libp++/pxx_common.cc
+++ b/c++/libp++/pxx_common.cc
@@ -34,6 +34,7 @@
#include <stdarg.h>
#include <locale.h>
#include <typeinfo>
+#include <exception>
namespace pxx
{
diff --git a/c++/libp++/pxx_heap_allocator.cc b/c++/libp++/pxx_heap_allocator.cc
index 48676f7..fbc6d5d 100644
--- a/c++/libp++/pxx_heap_allocator.cc
+++ b/c++/libp++/pxx_heap_allocator.cc
@@ -55,7 +55,7 @@ HeapAllocator::HeapAllocator (
(lists + get_order(current_size))->put(p);
}
-HeapAllocator::~HeapAllocator ()
+HeapAllocator::~HeapAllocator () throw (SysError)
{}
void* HeapAllocator::allocate (size_t _size)
diff --git a/c++/libp++/pxx_heap_allocator.hh b/c++/libp++/pxx_heap_allocator.hh
index 52c9a54..0a44681 100644
--- a/c++/libp++/pxx_heap_allocator.hh
+++ b/c++/libp++/pxx_heap_allocator.hh
@@ -110,7 +110,7 @@ public:
) ;
//
// Destructor
- ~HeapAllocator () ;
+ ~HeapAllocator () throw (SysError);
//
// Allocate memory block of _size bytes
void* allocate (size_t _size) ;
diff --git a/c++/runtime/rf_core.cc b/c++/runtime/rf_core.cc
index bb01cad..b7c65ac 100644
--- a/c++/runtime/rf_core.cc
+++ b/c++/runtime/rf_core.cc
@@ -27,6 +27,7 @@
#include <time.h>
#include <stdlib.h>
#include <locale.h>
+#include <exception>
namespace pxx {
extern void terminate_handler () ;
diff --git a/c++/runtime/rf_expr.hh b/c++/runtime/rf_expr.hh
index e614324..860e459 100644
--- a/c++/runtime/rf_expr.hh
+++ b/c++/runtime/rf_expr.hh
@@ -60,7 +60,7 @@ class Expr
/// We may use expression methods in SplitIterator class. We cannot avoid this
/// because SplitIterator simultaneously changes two expressions in a way that
/// adding necessary methods to Expr class will break invariants.
-template <Direction D = d_lt>
+template <Direction D> // = d_lt>
friend class SplitIterator ;
///
/// Stack and Arg classes are our friends because they use special copy
diff --git a/c++/runtime/rf_expr.ih b/c++/runtime/rf_expr.ih
index fc997ed..11cce67 100644
--- a/c++/runtime/rf_expr.ih
+++ b/c++/runtime/rf_expr.ih
@@ -241,9 +241,9 @@ inline uintptr_t Expr::get_flags () const
inline void Expr::dump () const
{
Term* p;
- printf("%p, %p, %"PRIuPTR": ", first, last, last - first);
+ printf("%p, %p, %" PRIuPTR ": ", first, last, last - first);
for (p = first; p < last; p++) {
- printf("[%08"PRIxPTR" %08"PRIxPTR"]", p->data1, p->uint_data2);
+ printf("[%08" PRIxPTR " %08" PRIxPTR "]", p->data1, p->uint_data2);
}
printf("\n");
}
@@ -636,7 +636,7 @@ inline Expr::Expr (Expr const& _expr)
Term* q = first;
for (Term* p = _expr.get_first(); p < _expr.get_last(); p++, q++) {
new (q) Symbol<ObjClass2, typename SymbolType<ObjClass2>::Type>(
- p->get_object<ObjClass1>().convert<ObjClass2>());
+ p->get_object<ObjClass1>().convert());
}
}
@@ -998,19 +998,26 @@ static INLINE bool write_wstr (FILE* _fp, WString const& _ws)
while ((wc = *p++) != null) {
switch (wc) {
case L'\t':
- if (fputs("\\t", _fp) == EOF) return false; break;
+ if (fputs("\\t", _fp) == EOF) return false;
+ break;
case L'\r':
- if (fputs("\\r", _fp) == EOF) return false; break;
+ if (fputs("\\r", _fp) == EOF) return false;
+ break;
case L'\n':
- if (fputs("\\n", _fp) == EOF) return false; break;
+ if (fputs("\\n", _fp) == EOF) return false;
+ break;
case L'\v':
- if (fputs("\\v", _fp) == EOF) return false; break;
+ if (fputs("\\v", _fp) == EOF) return false;
+ break;
case L'\\':
- if (fputs("\\\\", _fp) == EOF) return false; break;
+ if (fputs("\\\\", _fp) == EOF) return false;
+ break;
case L'\'':
- if (fputs("\\\'", _fp) == EOF) return false; break;
+ if (fputs("\\\'", _fp) == EOF) return false;
+ break;
case L'\"':
- if (fputs("\\\"", _fp) == EOF) return false; break;
+ if (fputs("\\\"", _fp) == EOF) return false;
+ break;
default:
if (iswprint(wc)) {
size_t n = wctomb(buf, wc);
diff --git a/c++/runtime/rf_stack.ih b/c++/runtime/rf_stack.ih
index d02d06f..b0229fa 100644
--- a/c++/runtime/rf_stack.ih
+++ b/c++/runtime/rf_stack.ih
@@ -247,7 +247,7 @@ inline void Stack::dump () const
Expr const* ap = geta(p);
for (int n = getn(p); n; n--, ap++)
{
- printf(" (%p,%p,%p:%"PRIuPTR")\n",
+ printf(" (%p,%p,%p:%" PRIuPTR ")\n",
ap->get_first(), ap->get_last(),
ap->get_mem_chunk(), ap->get_mem_chunk() ? ap->get_mem_chunk()->get_ref_count() : 0);
}