Project

General

Profile

Bug #10350

compile error in bignum.c line 3297 with old fcc on Solaris

Added by ngoto (Naohisa Goto) almost 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.2.0dev (2014-10-09) [sparc64-solaris2.10]
[ruby-dev:<unknown>]

Description

Solaris上の古い fcc (Fujitsu C compiler) 5.6 にて、以下のコンパイルエラーが発生します。

"bignum.c", line 3297: error: initialization: constant expression is expected for variable: `nlz_bits_in_msbyte_bary'

以下のように変数の宣言と初期化を別々にしたらエラーなくビルドできました。

Index: bignum.c
===================================================================
--- bignum.c    (revision 47859)
+++ bignum.c    (working copy)
@@ -3294,7 +3294,7 @@
     static const BDIGIT char_bit[1] = { CHAR_BIT };
     BDIGIT numbytes_bary[bdigit_roomof(sizeof(numbytes))];
     BDIGIT val_numbits_bary[bdigit_roomof(sizeof(numbytes) + 1)];
-    BDIGIT nlz_bits_in_msbyte_bary[1] = { nlz_bits_in_msbyte };
+    BDIGIT nlz_bits_in_msbyte_bary[1];
     BDIGIT word_numbits_bary[bdigit_roomof(sizeof(word_numbits))];
     BDIGIT div_bary[numberof(val_numbits_bary) + BIGDIVREM_EXTRA_WORDS];
     BDIGIT mod_bary[numberof(word_numbits_bary)];
@@ -3304,6 +3304,8 @@
     int sign;
     size_t numwords;

+    nlz_bits_in_msbyte_bary[0] = nlz_bits_in_msbyte;
+
     /*
      * val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte
      * div, mod = val_numbits.divmod(word_numbits)
#1

Updated by ngoto (Naohisa Goto) almost 6 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r47860.


  • bignum.c (absint_numwords_generic): set an array element after definition of a variable to fix compile error with older version of fcc (Fujitsu C Compiler) 5.6 on Solaris 10 on Sparc. [Bug #10350] [ruby-dev:48608]

Updated by ngoto (Naohisa Goto) over 5 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: DONTNEED, 2.1: REQUIRED

Updated by nagachika (Tomoyuki Chikanaga) over 5 years ago

  • Backport changed from 2.0.0: DONTNEED, 2.1: REQUIRED to 2.0.0: DONTNEED, 2.1: DONE

Backported into ruby_2_1 at r48303.

Also available in: Atom PDF