0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

bundle install で発生した calloc 部分のエラー

Posted at

発生したエラー

bundle install時に以下のエラーが発生した。

Installing prism 0.19.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
(略)
src/diagnostic.c:285:69: error: 'calloc' sizes specified with 'sizeof' in the
earlier argument and not in the later argument [-Werror=calloc-transposed-args]
285 |     pm_diagnostic_t *diagnostic = (pm_diagnostic_t *)
calloc(sizeof(pm_diagnostic_t), 1);
|
^~~~~~~~~~~~~~~
src/diagnostic.c:285:69: note: earlier argument should specify number of
elements, later size of each element
src/diagnostic.c: In function 'pm_diagnostic_list_append_format':
src/diagnostic.c:315:69: error: 'calloc' sizes specified with 'sizeof' in the
earlier argument and not in the later argument [-Werror=calloc-transposed-args]
315 |     pm_diagnostic_t *diagnostic = (pm_diagnostic_t *)
calloc(sizeof(pm_diagnostic_t), 1);
|
^~~~~~~~~~~~~~~
src/diagnostic.c:315:69: note: earlier argument should specify number of
elements, later size of each element
cc1.exe: all warnings being treated as errors
make: *** [Makefile:49: build/static/diagnostic.o] エラー 1
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

原因

c言語のコードで使用されているcalloc関数の引数の指定に誤りがあること。

void *calloc(size_t num, size_t size);

num は確保するメモリの「要素数」、size は各要素の「サイズ」

エラーが発生しているコード
pm_diagnostic_t *diagnostic = (pm_diagnostic_t *) calloc(sizeof(pm_diagnostic_t), 1);

先にサイズを指定し、その後メモリの要素数を指定している。

正しいコード
pm_diagnostic_t *diagnostic = (pm_diagnostic_t *) calloc(1, sizeof(pm_diagnostic_t));

修正

該当のコードを手作業で修正したが、bundle installする度にインストールし直されるため効果なし。

エラーが発生している箇所は、prismというgemのインストールの箇所だが、Gemfileで特段指定していなかった。また、バージョンが古いことに問題がある可能性を考え、Gemファイルに以下を追加した。

Gemfile
gem "prism", "1.2.0"

これに伴って、prismのバージョンと会わなくなった他のgemのバージョンを変更したところ、エラーなくbundle installが完了した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?