Renesas Rulz - Japan
  • User
    Join or Sign In
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • Groups
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
IDE for GR フォーラム WString.cppに記載の toupper関数ばぐ…
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 チャレンジプログラム

 GR-SAKURA

 GR-KURUMI

 SNShield

 Web Compiler

 IDE for GR

 その他

 

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他

  • Date kawakawa
    kawakawa
  • Date 2017/8/15 1:39
  • Replies 10 replies
  • Subscribers 288 subscribers
  • Views 8244 views
Options
  • Share
  • More
  • Cancel
Related Tags
  • GR-ADZUKI
  • gr-citrus
  • GR-LYCHEE
  • GR-PEAC
  • gr-sakura
  • i2c
  • IDE for GR
  • mac
  • MP3
Related

WString.cppに記載の toupper関数ばぐ?

PCはmac、ボードはGR-COTTONです
/Applications/IDE4GR.app/Contents/Java/hardware/arduino/rl78g13

のWString.cppに記載してあるchar toupper(char c)関数がバグっているかもしれません

(String::toUpperCaseから呼ばれている)

toUpperCaseの結果がおかしいので

{'a', 'b', 'c', 'd', 'e', 'f'}に対してWString.cppに記載してあるtoupperを呼び出してみたところ

¿ À Á Â Ã Ä

とそれぞれ変換されました。

下記がWString.cppに記載してあるコードになります(バグっているようには見えないのですが、、、、)

char toupper(char c) {
  if (c >= 'a' && c <= 'z') {
    return (c - 'a' - 'A');
  } else {
    return c;
  }
}

ちなみに、(恐らく)ctype.hのtoupperであれば正常な結果になります

 

  • Cancel
  • Reply
  • kawakawa
    kawakawa
    • 0
    • 2017/8/15 1:48
    (補足)

    >ちなみに、(恐らく)ctype.hの、、、

    の(恐らく)は、ctype.hに書かれているかどうかが「恐らく」という意味です。
    WString.cppではないtoupperは正常な結果になりました。という意味です。
  • fujita nozomu
    fujita nozomu
    • 0
    • 2017/8/15 2:07
    下記がWString.cppに記載してあるコードになります(バグっているようには見えないのですが、、、、)
    char toupper(char c) {
      if (c >= 'a' && c <= 'z') {
        return (c - 'a' - 'A');
      } else {
        return c;
      }
    }
    

    下記でないとおかしい感じですね。

    char toupper(char c) {
      if (c >= 'a' && c <= 'z') {
        return (c - 'a' + 'A');
      } else {
        return c;
      }
    }
    
  • kawakawa
    kawakawa
    • 0
    • 2017/8/15 2:22

    In reply to fujita nozomu:

    なるほど (c - ('a' - 'A'))  つまりかっこ展開して(c - 'a' + 'A')
    とすべきですね!
    中の方、ご修正お願いします!
  • kawakawa
    kawakawa
    • 0
    • 2017/8/15 2:25

    In reply to kawakawa:

    ついでにWStringが結構古いArduinoベースなので最近のメソッドと差異があるので出来れば新しくしてほしいです
  • Okamiya Yuuki
    Okamiya Yuuki
    • 0
    • 2017/8/15 20:58

    In reply to kawakawa:

    kawakawaさん、Fujitaさん、
    ご指摘ありがとうございます。他のライブラリファイルもなるべく新しいArduinoベースにしようと思います。V-upは9月中に行いたいと思います。
  • NoMaY
    NoMaY
    • 0
    • 2017/8/16 8:14

    In reply to Okamiya Yuuki:

    こんにちは。NoMaYです。突然失礼します。

    ところで、GR-KURUMI/GR-COTTONのEEPROMライブラリはルネサス製のソース非公開のバイナリ形式ライブラリを使用しているので、うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくるとGPL違反になっちゃいますよね?(現状は、いわゆるクリーンルーム方式みたいなやり方で、インターフェイスだけ合わせて中身はフルスクラッチしたルネサスオリジナルコードだと思いますので、GPL違反にならないのだろうと思っていますが、、、)

  • fujita nozomu
    fujita nozomu
    • 0
    • 2017/8/16 8:41

    In reply to NoMaY:

    > ところで、GR-KURUMI/GR-COTTONのEEPROMライブラリはルネサス製のソース非公開のバイナリ形式ライブラリを使用しているので、うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくるとGPL違反になっちゃいますよね?

    GPL 違反になるのは GPL/LGPL のライブラリとルネサス製 EEPROM ライブラリをリンクし作成したバイナリを公開/販売等をした場合では?

    > うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくると

    こゝ↑は絶対的な条件ではないと思います。

  • NoMaY
    NoMaY
    • 0
    • 2017/8/16 8:51

    In reply to fujita nozomu:

    そうでした、そうでした。定番中の定番のGPL違反の早トチリというか突っ込みどころでしたね。

  • NoMaY
    NoMaY
    • 0
    • 2017/8/16 10:04

    In reply to NoMaY:

    こういうことですね。(元のスレッドの内容からの脱線が大きくなってしまって申し訳ありません。)

    現状:
    →GPLのコードをリンクしていなければEEPROMライブラリをリンクしたバイナリを配布してもGPL/LGPL違反にならない

    もしもArduinoから最新のEEPROMライブラリのコードを持ってきてEEPROMライブラリを新しくしてしまうと:
    →GPLのコードをリンクしていなくてもEEPROMライブラリをリンクしたバイナリを配布することはLGPL違反になる

  • fujita nozomu
    fujita nozomu
    • 0
    • 2017/8/16 13:35

    In reply to NoMaY:

    • GPL/LGPL のライブラリを静的にリンクしたバイナリは解析を禁止できません。
    • GR-KURUMI 等に提供されている データ・フラッシュ・メモリアクセスのライブラリ pfdl.a は出自が不明であり使用条件が明記されていません。

    以上の話と関係あるかは不明ですが、例えばルネサスさんが公開されている『データフラッシュライブラリ Type04』に添付されている ソフトウェアのご使用条件.pdf にある 

    4.禁止事項
    (1)お客様は、本プログラムのうちオブジェクトコード形式で提供された部分につき、リバースアセンブル、リバースコンパイル、リバースエンジニアリング、改変等をすることはできません。

    こういった使用条件とは GPL/LGPL は相容れない可能性はあります。

サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2019 Renesas Electronics Corporation. All rights reserved.