use do/while(0) around GetDBM macros

* README.EXT: wrap GetDBM with do/while(0)
* README.EXT.ja: ditto
* ext/dbm/dbm.c: ditto, likewise for GetDBM2
* ext/gdbm/gdbm.c: ditto
* ext/sdbm/init.c: ditto
  [ruby-core:61217]

ref: http://c-faq.com/cpp/multistmt.html

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2014-03-02 22:50:31 +00:00
parent 60bfa43238
commit fd61a78303
6 changed files with 23 additions and 14 deletions

View file

@ -683,10 +683,10 @@ wrapping DBM* directly, because we want to cache size information.
To retrieve the dbmdata structure from a Ruby object, we define the
following macro:
#define GetDBM(obj, dbmp) {\
#define GetDBM(obj, dbmp) do {\
Data_Get_Struct(obj, struct dbmdata, dbmp);\
if (dbmp->di_dbm == 0) closed_dbm();\
}
} while (0)
This sort of complicated macro does the retrieving and close checking for
the DBM.